Согласно документации django, мы можем просто использовать декоратор user_passes_test
для управления доступом к данному представлению.
Вызываемая функция должна возвращать True или False в зависимости от результата теста.
Теперь я просто хочу выдать ошибку HTTP 403 при сбое теста.
Опция 1
Если я следую логике документацииЯ должен:
- вызвать
@user_passes_test(func, login_url='/errors/403')
- создать представление
def permission_denied(request):
raise PermissionDenied
- обновить
urlpatterns
в urls.py
с:
path('errors/403', views.permission_denied, name="error_403"),
Опция 2
Просто raise PermissionDenied
в тестовой функции вместо возврата False
(нет необходимости в просмотре и изменении или urls.py
)
С точки зрения читабельности кода, второй вариант выглядит как cleaner .
Однако он ломает логика из django.
Кто-нибудь посоветует, какой метод лучше?