在DetailView中您可以访问self.request
,self.args
和self.kwargs
!
编号:https://docs.djangoproject.com/en/dev/topics/class-based-views/generic-display/#dynamic-filtering
在你的urls.py添加如下内容:
urlpatterns = [
#...
url(r'^details/(?P<pk>[0-9]+)/$', UserDetail.as_view()),
]
和你UserDetail现在可以访问由self.kwargs['pk']
request.user.id
和PK(见参考上面:kwargs是基于名称,所以你可以通过self.kwargs['name']
访问它,而self.args是基于位置的,所以你可以通过self.args [0]来访问它)。
如果我正确理解您的问题,您试图操纵DetailView的查询集,以仅当当前登录用户试图访问他的页面时才返回数据。 如果这是真的,那么你应该重写get_queryset在你的类,像:
def get_queryset(self):
if self.kwargs['pk'] == self.request.user.id:
return Profile.objects.filter(id=self.request.user.id)
else:
return Profile.objects.none()
你必须在此改变高清get_context_data(个体经营,** kwargs):你会得到PK = self.kwargs ['PK '] – 2014-09-06 11:27:23