在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