繁体   English   中英

Django 2.1.7如何在包视图上使用装饰器

[英]Django 2.1.7 How to use a decorator on a package view

我想知道如何在函数view.py上使用装饰器,该装饰器不能直接在我的应用程序中找到,而是在包装中(venv / lib / ...)

有关更多详细信息,我将构建一个使用django-allauth的应用程序。 我创建了一个装饰器,要求用户在访问某些页面之前确认密码。

一切顺利,但我想在可以管理电子邮件的aullauth函数上使用此构造函数。

我不知道该如何进行...

在此处输入图片说明

对不起我的英语不好。

如果是功能视图,则可以执行此操作

import package_view...

@decorator
def custom_view(request, *args, **kwargs):
    return package_view(request, *args, **kwargs)

如果它是CBV,则可以从中继承它,并将装饰器添加到dispatch方法中:

class CustomView(PackageView):
    @decorator
    def dispatch(request, *args, **kwargs):
        return super().dispatch(request, *args, **kwargs)

@Pedro,您好:在这里,我尝试了基于类的基本视图的解决方案,但是没有成功。 由于我的知识有限,我可能没有针对正确的上课...

不过,我通过定位url并在目标url上使用装饰器解决了问题

它可以帮助其他人的样子是这样的:

...
from allauth.account import views as allauth_views
from .decorators import confirm_password

urlpatterns = [
    re_path(r'^accounts/', include('allauth.urls')),
    re_path(r"^email/$", confirm_password(allauth_views.email), name="account_email"), 
    ...
]

非常感谢您,感谢您的帮助和时间。

您的解决方案很可能会在将来对我有所帮助。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM