如何使用 Django 的内置登录系统
Django为Web应用程序最常见的用例提供了大量内置资源。注册应用程序是一个非常好的例子,关于它的一个好处是功能可以直接使用。
使用Django注册应用程序,您可以利用以下功能:
- 登录
- 登出
- 注册
- 重设密码
在本教程中,我们将重点介绍登录和注销功能。要注册和密码重置,请查看下面的教程:
- 如何创建密码重置视图
- 如何创建用户注册视图
准备开始
在我们开始之前,请确保您的INSTALLED_APPS
中包含了django.contrib.auth
,MIDDLEWARE_CLASSES
设置中正确配置了认证中间件。
当你使用命令 startproject
创建一个新的 Django
项目时,它们都已经配置好了。假如你没有手贱删除最初的配置,这些配置应该全部设置好了。
如果您创建一个新项目只是为了学习本教程,请使用命令行创建一个用户,以便我们可以测试登录和注销页面。
$ python manage.py createsuperuser
在本文的最后,我将以最小配置提供示例的源代码。
配置 URL 路由
首先导入django.contrib.auth.views
模块,并为登录和注销视图添加URL路由:
from django.conf.urls import url
from django.contrib import admin
from django.contrib.auth import views as auth_views
urlpatterns = [
url(r'^login/$', auth_views.login, name='login'),
url(r'^logout/$', auth_views.logout, name='logout'),
url(r'^admin/', admin.site.urls),
]
创建登录模板
默认情况下,django.contrib.auth.views.login
视图将尝试渲染 registration/login.html
模板。 因此,我们需要创建一个名为 registration
的文件夹,并在其中放置 login.html
模板。
下面就是一个的登录模板:
{% extends 'base.html' %}
{% block title %}Login{% endblock %}
{% block content %}
<h2>Login</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Login</button>
</form>
{% endblock %}
这个简单的例子已经验证了用户名和密码, 并完成用户登录。
自定义 Login View
通过传递参数对 login
View 进行自定义 。例如,你不想使用 registration/login.html
登录模版。你可以通过 template_name 参数定义你希望使用的模版。
url(r'^login/$', auth_views.login, {'template_name': 'core/login.html'}, name='login'),
假如,你已经自定义了用户模型与用户身份验证表单。可以通过使用 authentication_form
参数传递自定义用户验证表单。
现在,我们需要在 settings.py
添加一些重要的配置, Django在成功验证后重定向用户的URL。
在 settings.py
文件中添加:
LOGIN_REDIRECT_URL = 'home'
该值可以是硬编码的URL或URL名称。 LOGIN_REDIRECT_URL
的默认值是 /accounts/profile/
。
注意, Django 会尝试将用户重定向到 GET next
参数中的 URL。
配置 logout view
访问 django.contrib.auth.views.logout
视图后,Django将渲染 registration/logged_out.html
模板。 类似于我们在 login view
中所做的方式,您可以传递不同的模板,如下所示:
url(r'^logout/$', auth_views.logout, {'template_name': 'logged_out.html'}, name='logout'),
通常,我更喜欢使用 next_page
参数,并将其重定向到项目的主页或重定向到登录页面。
url(r'^logout/$', auth_views.logout, {'next_page': '/'}, name='logout'),
在本地运行示例
在这个简短的教程中使用的代码可以在 GitHub 上找到。
- 克隆代码仓库:
$ git clone https://github.com/sibtc/simple-django-login.git
- 运行 migrations:
$ python manage.py migrate
- 创建一个新用户
$ python manage.py createsuperuser
- 运行 Django 服务
$ python manage.py runserver
- 在你的浏览器中输入
127.0.0.1:8000/login
结论
了解更多关于 Django 注册视图的信息,可以去 Django官方网站文档 点击这里