Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
def should_be_anonymous(func, url):
def wrapper(request, *args, **kwargs):
if request.user.authenticated:
return HttpResponseRedirect(url)
return func(request, *args, **kwargs)
return wrapper
should_be_anonymous реализуется одной строчкой.@user_passes_test(lambda u: u.is_anonymous(), login_url=reverse_lazy('my_view_name'))
def some_view(request, *args, **kwargs):
pass
login_url здесь выбрано не очень удачно).request, я не могу придумать. О, можно проверять метод HTTP, например допускать только POST. Но Джанга у тут уже обо всем позаботилась.def wrapper(request, *args, **kwargs):
if not condition_func(request, *args, **kwargs):
return false_func(request, *args, **kwargs)
return view(request, *args, **kwargs)
«Декораторы проверки» для Views