django-pagination分页url默认显示方式,例如?page=2 可以改成/page/2的形式么?
這兩種用法的場景不一樣
?page=2 這裡的page=2是以url的參數傳遞,你可以在django view裡面的request.kwargs裡面得到,一般用來傳遞普通參數: request.kwargs['page'] # 2
/page/2/ 這個『2』是url的本體,這種用法一般是配合django class-based view來使用,自動將這個『2』對應的django model object解析出來 例如url.py:
url(r'^user/(?P<pk>\d+)/edit/$', views.YourView.as_view(), name='your_view')
views.py:
from django.views.generic import DetailView class YourView(DetailView): def get_object(self, queryset=None): pk = self.kwargs.get(self.pk_url_kwarg, None) if int(pk) == 0: return None return super(Yourview, self).get_object(queryset)
這裡的get_object方法做的就是類似的事情,這樣你就能直接透過self.object來存取這個物件了 可參考官方文件https://docs.djangoproject.com/en/1.7/topics/class-based-views/generic-display/
感覺應該跟分頁類別沒有關係,只是page參數怎麼傳的問題,可以透過URLConf傳,也可以透過QueryString創,取到這個參數後,再用pagination實作分頁
這兩種用法的場景不一樣
?page=2
這裡的page=2是以url的參數傳遞,你可以在django view裡面的request.kwargs裡面得到,一般用來傳遞普通參數:
request.kwargs['page'] # 2
/page/2/
這個『2』是url的本體,這種用法一般是配合django class-based view來使用,自動將這個『2』對應的django model object解析出來
例如url.py:
views.py:
這裡的get_object方法做的就是類似的事情,這樣你就能直接透過self.object來存取這個物件了
可參考官方文件
https://docs.djangoproject.com/en/1.7/topics/class-based-views/generic-display/
感覺應該跟分頁類別沒有關係,只是page參數怎麼傳的問題,可以透過URLConf傳,也可以透過QueryString創,取到這個參數後,再用pagination實作分頁