Я хочу создать свой сайт так, чтобы, если пользователь совершает нападки /login
страница и они уже зарегистрированы, она перенаправит их к домашней странице. Если они не будут зарегистрированы затем, то это будет обычно отображаться. Как я могу сделать это, так как код для входа встроен в Django?
Я предполагаю, что в настоящее время вы используете встроенное представление входа в систему с
(r'^accounts/login/$', 'django.contrib.auth.views.login'),
или чем-то подобным в ваших URL-адресах.
Вы можете написать собственное представление входа в систему, которое будет оберткой по умолчанию. Он проверит, вошел ли уже пользователь в систему, и перенаправит, если он есть, а в противном случае использует представление по умолчанию.
что-то вроде:
from django.contrib.auth.views import login
def custom_login(request):
if request.user.is_authenticated():
return HttpResponseRedirect(...)
else:
return login(request)
и, конечно, измените свои URL соответственно:
(r'^accounts/login/$', custom_login),
Все, что вам нужно сделать, это установить "корневой" URL для просмотра домашней страницы. Поскольку просмотр домашней страницы уже ограничен для вошедших в систему пользователей, он автоматически перенаправляет анонимных пользователей на страницу входа.
Сохраните URL как есть. И добавьте что-то вроде:
(r'^$', 'my_project.my_app.views.homepage'),