Я пытаюсь перенаправить на корневой URL-адрес, когда к URL-адресу приложения обращаются без входа пользователя.
Я пытался сделать это двумя способами:
- Использование декоратора
@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/