django - 如何扩展 django.contrib.auth 视图?
问题描述
我如何安排模板:我已将我login.html
的模板放在/templates/registration
Django 文件夹中。因此,Django 会根据请求对accounts/login
、accounts/logout
url 请求和呈现进行必要的处理。而且我没有为个人login
和logout
功能编写代码。
我要实现的目标:我想在登录请求时对用户进行身份验证,当他们请求登录页面时:
- 如果用户是匿名用户,我想呈现正常的登录页面。
- 但是,如果用户经过身份验证,那已经登录。我想显示一个错误而不是记录的页面。
我想在views.py和urls.py而不是在模板中通过以下方式实现这一点:
{% if user.is_authenticated %}
{% if user.is_anonymous %}
网址.py
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'),
]
解决方案
提供LOGIN_REDIRECT_URL = '/'
在settings.py
. 然后使用以下 url 登录页面:
urlpatterns = [
url(r'^login/',
auth_views.LoginView.as_view(redirect_authenticated_user=True),
name='login'),
]
如果他们在通过身份验证后尝试登录,这会将您的用户重定向到设置文件中提供的 URL。
推荐阅读
- postgresql - 在 PostgreSQL 中选择 10000 条记录需要很长时间
- c# - 无效的 WPF 画布鼠标向上事件
- php - 如果我从 Laravel 的端口服务器中删除“/dashboard”,如何将用户重定向到仪表板?
- docker - 如何使用诗歌更新 docker 中的依赖项?
- c++ - C++:如何创建一个集合字段来存储有限数量的类实例?
- sql-server - 无法从 Excel 连接到 SQL Server 以生成报告。已启用命名管道和 tcp/ip。使用可信连接
- php - Gmail SMTP 中继将不允许与 PHPMailer 连接
- jmeter - JMETER 嵌套 while 循环在 CSV 数据文件的第一行停止
- reactjs - 为什么这个 setInterval 函数会导致 TypeError: n is undefined
- multithreading - Julia线程中的变量是循环线程本地的吗?