Как указать URL-адрес перенаправления login_required в django?

У меня есть функция просмотра:

@login_required
def myview():
    # do something
    # respond something
    pass

Как я могу указать точный URL-адрес для перенаправления этой функции просмотра?


person Pol    schedule 26.08.2010    source источник
comment
Есть ли что-то вроде logout_required в django?   -  person Syed Ali    schedule 09.02.2019


Ответы (7)


LOGIN_URL в ваших настройках

Ссылка:

person Bob    schedule 26.08.2010

вы можете сделать это, на ваш взгляд, отлично работает для меня, не объявляя в settings.py

from django.contrib.auth.decorators import login_required

@login_required(login_url='/example url you want redirect/') #redirect when user is not logged in
def myview(request):
    do something
    return something #returns when user is logged in
person kartheek    schedule 07.11.2012
comment
Это правильно и работает отлично, но всегда предпочтительнее использовать LOGIN_URL, потому что в будущем URL-адрес для входа изменится, вам может потребоваться изменить много мест - person Yash; 22.01.2017
comment
Лучше использовать имя URL вместо пути, так как оно может измениться в любое время. re_path(r"login$", LoginView.as_view(template_name="registration/login_form.html"), name="player_login") тогда декоратор @login_required(login_url="player_login") Конечно, он заменяет login_url и login_url_redirect в настройках. Спасибо, что поделился. - person Doogle; 14.10.2018
comment
Было бы лучше, если бы вы добавили, откуда импортировать login_required. - person Rishabh Agrahari; 22.11.2018

URL-адрес для входа по умолчанию: '/accounts/login/'
если вы хотите изменить его, перейдите в settings.py

LOGIN_URL='/path/to/url'
LOGIN_REDIRECT_URL='/path/to/redirecturl'
person abe312    schedule 28.06.2015

это из документации должно быть полезно: https://docs.djangoproject.com/en/1.5/topics/auth/default/#the-login-required-decorator

@login_required(login_url='/accounts/login/')
def my_view(request):
    ...
person vijay shanker    schedule 20.07.2013

Перейдите к вашему файлу settings.py. Вы можете добавить это в любом месте вашего файла settings.py, но я предпочитаю размещать его внизу. LOGIN_URL = '/логин/'

ПРИМЕЧАНИЕ. «/login/» — это сегмент URL-адреса, который приводит пользователя на страницу входа. Полный URL-адрес похож на этот «myexample.com/login/».

person Amazing Angelo    schedule 12.01.2012

В настройках проекта джанго

добавить ниже код

LOGIN_REDIRECT_URL = 'path/to/url'

а затем импортируйте этот LOGIN_REDIRECT_URL в свои представления и добавьте

`@login_required(login_url=LOGIN_REDIRECT_URL)`

в верхней части ваших представлений, которые вы хотите ограничить, это будет работать

person 5h4d0w5    schedule 28.04.2020

вы также можете взять URL из поля зрения

Например

path('login/', login_view, name='login_name'),

тогда декоратор будет

@login_required(login_url='login_name')
person Scooter Brown    schedule 16.08.2020