django类视图与装饰和会话

django类视图与装饰和会话,第1张

概述我试图将我的一些 django视图从基于函数的视图转换为基于类的视图,我遇到了一个小问题. 我的OO有点弱,我认为问题在于我已经忘记了事情的进展. 我有一个自定义的登录装饰器,我需要在视图上,所以我… 首先,我从这个例子中得到了View类 http://www.djangosnippets.org/snippets/760/ 然后我的视图类看起来像这样…… class TopSecretPage( 我试图将我的一些 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,**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类视图与装饰和会话所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存