Я начинаю работу с фреймворком django и создал простой веб-сайт, на котором пользователь сначала входит в систему, а затем перенаправляется на другую страницу.
Я попытался ввести URL-адрес перенаправленной страницы перед входом в систему, и он загружается. Вместо этого я хочу, чтобы он перенаправлял обратно на страницу входа (домашнюю страницу).
Я попытался проверить, аутентифицирован ли пользователь для просмотра страницы, только если это так. В файле views.py
перенаправленной страницы написано:
def index(request):
if request.user.is_authenticated():
return render(request, 'professors/index.html')
else:
return redirect('' % request)
professors/
— URL перенаправленной страницы''
— URL-адрес страницы входа (домашней страницы)Обновлять
views.py
:
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
# Create your views here.
@login_required
def index(request):
return render(request, 'professors/index.html')
urls.py
:
from django.urls import path
from . import views
urlpatterns = [
path(r'', views.index, name='index')
];
Чтобы ограничить просмотры только зарегистрированными пользователями, используйте декоратор для входа в систему django.
просмотры.py
from django.contrib.auth.decorators import login_required
@login_required
def index(request):
return render(request, 'professors/index.html')
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index')
]
Если они не вошли в систему, они будут перенаправлены на вашу страницу входа
Возможно, вы уже вошли в систему, этот метод определенно работает. И да, это должно быть в представлениях
Я знаю, что это не так, потому что я проверяю, могу ли я получить доступ к странице администратора, и появляется форма входа. Если бы я вошел в систему, это позволило бы мне получить доступ к странице администратора.
Покажите мне urls.py
и views.py
для этого представления
Обновлен пост с urls.py
и views.py
Сделал так, но он все еще позволяет мне получить доступ к странице
Я сам использую этот метод каждый день, он действительно работает. Не видя всего кода, я больше не могу вам здесь помочь. Не стесняйтесь поделиться остальной частью кода на мою электронную почту [email protected], я буду рад взглянуть.
Я собираюсь опубликовать это на github и поделиться ссылкой здесь, как только я закончу
Ссылка на Github: github.com/J-Казама/rep1urls.py
и views.py
для файла профессора (соответствует странице, которая не должна открываться, если пользователь не вошел в систему)
Проблема в том, что с этим файлом rep1/proj1/urls.py вы на самом деле не связали другие файлы url.py
Как я могу это сделать? Я пытался гуглить, но ничего полезного не нашел
Обновление: я вижу, что даже если я прокомментирую все в views.py
в файле профессоров, все работает как есть. И что немаловажно - я в полном замешательстве
Помещение path('home/', include('login.urls'))
вместо path('home/', auth_views.LoginView.as_view(template_name='login/sign.html'), name='login-website')
заставило его работать с предоставленным вами решением. Спасибо!
Я отредактировал код, но он по-прежнему разрешает доступ к URL-адресу. Должен ли этот код быть в
views.py
?