【发布时间】:2011-10-31 14:47:26
【问题描述】:
我正在尝试检查是 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,则只有请求的用户才能看到该页面,其他用户将被重定向到登录页面(从 @ 借用的示例行为987654341@).
【问题讨论】:
标签: django firefox django-generic-views django-authentication