我如何安排模板:我已将login.html
放在Django的/templates/registration
文件夹中。因此,Django根据请求对accounts/login
,accounts/logout
url请求和呈现进行必要的处理。我无法为单个login
和logout
函数编写代码。
我想要实现的目标:我想在登录请求时,当他们请求登录页面时对用户进行身份验证:
我想在 views.py 和 urls.py 中实现这一点,而不是在模板中实现: <击> 撞击>
<击>{% if user.is_authenticated %}
{% if user.is_anonymous %}
from django.conf.urls import url
from django.contrib.auth import views as auth_views
from . import views
urlpatterns=[
url(r'^register/$', views.register, name='register'),
url(r'^logout/$', auth_views.logout, {'next_page' : 'Homepage'}, name='logout'),
]
答案 0 :(得分:1)
您可以使用自己的视图包装视图,视图可以重定向或调用原始视图。
def wrapped_login(request):
if request.user.is_authenticated:
return redirect('whatever')
else:
return auth_views.login(request)
答案 1 :(得分:1)
在LOGIN_REDIRECT_URL = '/'
中提供settings.py
。然后使用以下URL登录页面:
urlpatterns = [
url(r'^login/',
auth_views.LoginView.as_view(redirect_authenticated_user=True),
name='login'),
]
如果用户在经过身份验证后尝试登录,则会将用户重定向到设置文件中提供的网址。