Как применить декоратор ко всем представлениям (модуля) в django
это происходит много, когда все представления в определенном модуле должны быть доступны только тогда, когда пользователь авторизован, или все они должны делать те же проверки.
Как я могу избежать повторения аннотаций по всему файлу?
3 ответов
при использовании представлений на основе классов вы можете создать базовый класс / mixin для всех этих представлений, который реализует желаемую функциональность (также используя декораторы), а затем все представления наследуются от этого базового представления.
from django.views.generic import TemplateView
class BaseView(TemplateView):
def get(self, request, *args, **kwargs):
# do some checking here
if not request.user.is_authenticated():
# do something if anonymous user
return super(BaseView, self).get(request, *args, **kwargs)
class MyView(BaseView):
pass
вы можете написать диспетчер, но если у вас есть много URL-адресов для модуля, вероятно, было бы удобнее создать промежуточное слой.
Читайте также: украшение-все-django-admin-Просмотры-1-4