Использовать код декоратора login_required от Django внутри функции представления?
Я хочу написать представление в Django (3.2), которое позволяет любому пользователю ввести значение, и только после того, как оно будет отправлено, потребовать вход (или регистрацию!). Что-то вроде следующего:
def my_view(request):
if request.GET.get('val', None):
# now login is required to do something
# can we use the login_required decorator here
# to forward to login, and then back here after login?
else:
# login is not yet required
# ... a form to gather up 'val'
Могу ли я повторно использовать декоратор login_required каким-то чистым способом в середине функции? Я мог бы скопировать и вставить его код (и код user_passes_test), но copy-and-paste кажется неудачным.
Мы можем работать с внутренней функцией, где мы применяем декоратор @login_required
[Django-doc] к:
from django.contrib.auth.decorators import login_required
def my_view(request):
@login_required
def has_val(request, theval):
# …
pass
val = request.GET.get('val', None)
if val:
return has_val(request, val)
else:
# …
pass