Если вы беспокоитесь о возможности повторного использования, вместо использования login_required
, вы можете использовать декоратор, который требует входа в систему, если в представление передается определенный аргумент (который может по умолчанию принимать значение True
). С моей головы это может выглядеть примерно так:
from django.contrib.auth.decorators import login_required
def login_possibly_required(view_func):
def inner(request, *args, **kwargs):
try:
require_login = kwargs.pop('require_login')
if require_login:
return login_required(view_func)(request, *args, **kwargs)
except KeyError:
pass
return view_func(request, *args, **kwargs)
return inner
Тогда вы бы определили свои взгляды так:
@login_possibly_required
my_view(request, arg1, arg2, require_login=True):
pass
Не проверено, но вы поняли.