我正在尝试将一些Django视图从基于函数的视图转换为基于类的视图,但遇到了一些小问题。
我的面向对象编程有点薄弱,我认为问题在于我不知道事情的去向。
我有一个需要在视图上使用的自定义登录装饰器,因此我需要...
首先,我有来自此示例的View类 http://www.djangosnippets.org/snippets/760/ 然后我的视图类看起来像这样...
问题在于我的装饰器由于某些原因无法访问request.session...
我的面向对象编程有点薄弱,我认为问题在于我不知道事情的去向。
我有一个需要在视图上使用的自定义登录装饰器,因此我需要...
首先,我有来自此示例的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: 在项目名称应用视图模块中尝试了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