我正在尝试将一些 django 视图从基于函数的视图转换为基于类的视图,但遇到了一个小问题。
我的面向对象有点弱,我认为问题是我已经不知道事情的进展情况。
我有一个自定义的登录装饰器,我需要在视图上使用,所以我......
首先我有这个例子中的 View 类http://www.djangosnippets.org/snippets/760/ 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