这两种用法的场景不一样 ?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=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/