美文网首页
Django报错:AttributeError: 'functi

Django报错:AttributeError: 'functi

作者: 滄梧 | 来源:发表于2018-11-25 16:52 被阅读0次

    在学习Django视图策略的时候,使用基于类的视图 (CBV),遇到了一个问题:

    re_path(r'^new_post/$', views.NewPostView.as_view(), name='new_post'),

    AttributeError: 'function' object has no attribute 'as_view'

    先简单介绍一下CBV:

    基于类的视图 (CBV)

    CBV是View类的集成类。这里的主要区别在于请求是以HTTP方法命名的类方法内处理的,例如GETPOSTPUTHEAD等。

    所以,在这里,我们不需要做一个条件来判断请求是一个POST还是它是一个GET。代码会直接跳转到正确的方法中。在View类中内部处理了这个逻辑。

    我的视图如下:

    view.py

    url:

    re_path(r'^new_post/$', views.NewPostView.as_view(), name='new_post'),

    最终在Stack Overflow上找到了答案,在这个类上不能使用@login_required这个装饰器,而需要使用method_decorator,并传递一个装饰器(或一个装饰器列表)并告诉应该装饰哪个类。在 CBV 中,装饰调度类是很常见的。它是一个Django内部使用的方法(在View类中定义)。所有的请求都会经过这个类,所以装饰它会相对安全。如下,注意导入模块from django.utils.decoratorsimport method_decorator:

    这样问题就解决了,这里贴上Stack Overflow原回答链接:Django/python: 'function' object has no attribute 'as_view' - Stack Overflow

    相关文章

      网友评论

          本文标题:Django报错:AttributeError: 'functi

          本文链接:https://www.haomeiwen.com/subject/vbwpqqtx.html