【发布时间】:2010-11-28 14:17:43
【问题描述】:
我正在尝试将我的一些 django 视图从基于函数的视图转换为基于类的视图,但遇到了一个小问题。
我的 OO 有点弱,我认为问题在于我已经忘记了事情的进展。
我有一个自定义登录装饰器,我需要在视图上使用它,所以我有...
首先我有这个例子中的 View 类 http://www.djangosnippets.org/snippets/760/
那么我的视图类是这样的……
class TopSecretPage(View):
@custom_login
def __call__(self, request, **kwargs):
#bla bla view stuff...
pass
问题是我的装饰器由于某种原因无法访问 request.session...
我的装饰器看起来像这样......
def myuser_login_required(f):
def wrap(request, *args, **kwargs):
# this check the session if userid key exist,
# if not it will redirect to login page
if 'field' not in request.session.keys():
return wrap
我认为我错过了一些简单的事情,所以感谢大家的耐心等待!
更新: 好的,这是我得到的错误...
“ViewDoesNotExist:在模块 projectname.application.views 中尝试了 TopSecretPage。错误是:类型对象 'TopSecretPage' 没有属性 'session'”
我也简化了装饰器,使其看起来像这样......
def myuser_login_required(request, *args, **kwargs):
# this check the session if userid key exist,
# if not it will redirect to login page
if 'username' not in request.session.keys():
return HttpResponseRedirect(reverse("login-page"))
return True
【问题讨论】:
标签: django session class views decorator