Django 2.1.7 Как использовать декоратор в представлении пакета - PullRequest
1 голос
/ 13 марта 2019

Я хотел бы знать, как использовать декоратор для функции view.py, которая не находит его непосредственно в моем приложении, но в пакете (venv / lib / ...)

Для более подробной информации, я собираюсь создать приложение, которое использует django-allauth. Я создаю декоратор, который просит пользователя подтвердить свой пароль перед доступом к определенной странице.

Все идет хорошо, но я бы хотел использовать этот конструктор для функции aullauth, которая может управлять электронной почтой.

Я не знаю, как поступить ...

введите описание изображения здесь

Извините за мой английский.

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Привет, @Pedro. Итак, здесь я попробовал решение для Class Base Views, но оно не сработало. Поскольку мои знания ограничены, я, вероятно, не нацелился на правильный класс ...

Тем не менее, я решил проблему, настроив 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"), 
    ...
]

Большое спасибо, я благодарен за вашу помощь и время.

Вполне вероятно, что ваши решения помогут мне в будущем. :)

1 голос
/ 13 марта 2019

Если это функциональное представление, вы можете сделать это

import package_view...

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

Если это CBV, вы можете наследовать его и добавить декоратор в метод отправки:

class CustomView(PackageView):
    @decorator
    def dispatch(request, *args, **kwargs):
        return super().dispatch(request, *args, **kwargs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...