我的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,**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解决方法 问题是你的包装器期望“request”作为第一个参数,但是类上的方法总是将“self”作为第一个参数.所以在你的装饰器中,它认为请求对象实际上是topSecretPage本身.
无论是Vinay还是artran的解决方案都应该有效,所以我不再重复了.只是想更清楚地描述问题可能会有所帮助.
总结以上是内存溢出为你收集整理的django类视图与装饰和会话全部内容,希望文章能够帮你解决django类视图与装饰和会话所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)