登录

python - django-pagination分页url显示方式的问题

django-pagination分页url默认显示方式,例如?page=2 可以改成/page/2的形式么?

# Python
巴扎黑巴扎黑2171 天前578 次浏览

全部回复(2) 我要回复

  • 黄舟

    黄舟2017-04-17 14:37:43

    这两种用法的场景不一样

    ?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/

    回复
    0
  • 高洛峰

    高洛峰2017-04-17 14:37:43

    感觉应该跟分页类没有关系,只是page参数怎么传的问题,可以通过URLConf传,也可以通过QueryString创,取到这个参数后,再用pagination实现分页

    回复
    0
  • 取消回复发送