Перенаправление на корневой URL из представления другого приложения - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь перенаправить на корневой URL-адрес, когда к URL-адресу приложения обращаются без входа пользователя.

Я пытался сделать это двумя способами:

  1. Использование декоратора
@login_required(login_url = '')
def index(request):
    return render(request, 'professors/index.html')

, который возвратил ошибку 404 о том, что текущий путь равен accounts/login

Передача views корневой страницы на redirect
def index(request):
    if request.user.is_authenticated:
        return render(request, 'professors/index.html')
    else:
        return redirect('login.views.index')

, которая возвратила ошибку 404 о том, что текущий путь равен professors/login.views.index

Корневой URL-адрес localhost:8000/, и я пытаюсь перенаправить на него после доступа к localhost:8000/professors/, когда пользователь не вошел в систему.

Эта проблема похожа на то, что я нашел здесь: Переадресация Django в root из представления

Однако применение решения не сработало для меня.Похоже, что при перенаправлении в root из представления приложения корень, в который оно перенаправляется, является корнем приложения, а не веб-сайта, и это верно для любого URL, перенаправленного после доступа к URL-адресу приложения.Например, если корневой URL-адрес равен localhost:8000, а URL-адрес приложения - localhost:8000/professors/, то попытка доступа к любому другому URL-адресу из последнего будет означать, что localhost:8000/professors/ является отправной точкой, а то, что я пишу в login_url илиredirect(redirect_URL) добавлено к этому, что означает, что я больше не могу получить доступ к localhost:8000

Конечное примечание:

Когда я попробовал return redirect ('') в else, он вернул

NoReverseMatch в / professors /

Реверс для '' не найден.'' не является допустимой функцией просмотра или именем шаблона.Что показывает, что отправная точка снова с localhost:800/professors/

1 Ответ

0 голосов
/ 14 июня 2019

Установите параметр login_url в login_required декоратор ,

@login_required(<b>login_url='/'</b>)
def index(request):
    return render(request, 'professors/index.html')

Вы также можете установитьLOGIN_URL в settings

#settings.py
LOGIN_URL='/'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...