我正在尝试检查是否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()
。我每个人都有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
)。