Mal*_*ala 5 authentication django
我正在使用django.contrib.authdjango项目处理用户身份验证。为了登录,我有
from django.contrib.auth.views import login, logout
# ...
url(r'^login/', login, name='login'),
url(r'^logout/', logout, {'next_page': '/'}, name='logout'),
Run Code Online (Sandbox Code Playgroud)
在我的主要项目中urls.py。
到目前为止,一切都很好。然而,我注意到,后在,如果我访问日志/login/,我仍然看到登录页面,并且我能够登录以其他用户。这似乎是违反直觉的行为-如果您在登录时尝试访问登录页面,则大多数网站都会显示错误或将您重定向到首页。
我正在使用内置的模型/视图,据我所知,我没有简单的方法来更改视图。是否有一种简单的方法来获得此功能(即,如果登录后阻止访问登录表单),或者最好的方法就是简单地修改模板以仅在未登录时显示表单?
简单地你可以这样写你的登录网址:
from django.contrib.auth import views as auth_views
path('login/', auth_views.LoginView.as_view(template_name="accounts/login.html", redirect_authenticated_user=True), name='login'),
Run Code Online (Sandbox Code Playgroud)
您template.html可以templateTags像这样在using 中隐藏内容:
{% if user.is_authenticated %}
<p>Only a logged in User can view</p>
{% else %}
<p>Only a logged out User can view</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
[编辑]
如果您想在呈现网页之前重定向用户,那么您可以在视图中执行此操作。
def myView(request):
if request.user.is_authenticated:
return render(request, 'logged_in_view.html')
else:
return render(request, 'logged_out_view.html')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2804 次 |
| 最近记录: |