我試圖檢查是否user.is_authenticated()
或user.has_perm()
,但似乎不可能擴展django基於類的通用視圖。我發現request
出現的唯一方法是get()
。在基於類的通用視圖中訪問用戶
class MyDetailView(DetailView):
def get(self, request, **kwargs):
import pdb
pdb.set_trace()
self.object = self.get_object()
context = self.get_context_data(object=self.object)
return self.render_to_response(context)
那裏,我發現request.user
是AnonymusClass
如果我登錄與否,無論實例。
(Pdb) request.user.__class__
<class 'django.contrib.auth.models.AnonymousUser'>
所以檢查認證或燙髮總是會失敗:
(Pdb) self.request.user.is_authenticated()
False
我試着重寫其他方法,如get_object()
,get_context_data()
ADN別人。我每個人都有self.request
屬性可用,但user
仍然是Anonymus
。
所以我的問題是:我應該如何檢查用戶是否使用基於類的視圖登錄!?
這是否意味着我必須(回去)使用基於功能的視圖?
我使用Python 2.7.1+
和Django version 1.4 pre-alpha SVN-16627
針對EVIAAC後: 使用login_required
或permissions_required
裝飾是不是一種選擇。檢索對象後,我需要檢查權限/登錄:如果對象的布爾字段registration_required
設置爲True
,則只有被請求的用戶才能看到該頁面,其他人將被重定向到登錄頁面(例如從django.contrib.flatpages
借用的行爲)。
這一定是別的。我創建了測試項目testapp與testmodel與testview使用django 1.3,它仍然是相同的結果。也許有一些我錯過了。你能不能發佈完整的測試代碼? – seler
這是完整的代碼。唯一缺少的是urlconf,正如你所期望的那樣:'url(r'^ test',TestView.as_view())' – zeekay
看來這個bug只存在於使用firefox,這很奇怪。 :/ – seler