本教程为系列教程,为方便阅读,每篇教程开头列出所有教程的目录索引:python
网站提供登陆、注册等用户认证功能是一个常见的需求。所以,Django 提供了一套功能完整的、灵活的、易于拓展的用户认证系统:django.contrib.auth。在本教程中,我将向你展现 auth 模块的基本用法,例如如何提供用户注册、登陆、修改密码、找回密码等功能;如何拓展 auth 内置的 User 模型;如何自定义用户验证后台,以支持用户使用诸如邮箱手机号等用户名登陆(默认只支持使用用户名登陆)等等。git
推荐新建一个 Django 工程来做为演示或者做为练习,以避免把已有的项目搞乱了。本教程的演示项目基于最新版 Django 1.11.1 和 Python 3.5,不过对于其它的 Django 和 Python 一样适用。首先在 Python 环境下安装 Django(推荐使用虚拟环境,如何使用虚拟环境能够参考 搭建 Django 开发环境。接下来使用 Django 提供的命令创建一个新的工程,我把它命名为 django_auth_example。github
$ django-admin startproject django_auth_example复制代码
工程建好了,目录结构以下:django
django_auth_example/
manage.py
django_auth_example/
__init__.py
settings.py
urls.py
wsgi.py复制代码
Django 在新建工程时已经为使用用户认证系统作好了所有必要的配置。不过有可能你并不是使用 django-admin 命令新建的工程,或者你使用的是一个正在开发中的项目,所以最好再检查一下 settings.py 文件中是否已经作好了所有必要配置。bash
首先检查一下必要的应用是否已经在 INSTALLED_APPS
配置里列出:session
django_auth_example/settings.py
INSTALLED_APPS = [
# 其它应用列表...
'django.contrib.auth',
'django.contrib.contenttypes',
]复制代码
为了使用用户认证系统,必须安装如下两个应用:app
django.contrib.contenttypes 是 auth 模块的用户权限处理部分依赖的应用。post
其次须要在中间件 MIDDLEWARE
配置里列出如下两个中间件:网站
即像下面这样的配置:url
django_auth_example/settings.py
MIDDLEWARE = [
# 其它中间列表...
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
]复制代码
若是以上配置没问题的话就能够正常地使用用户认证系统了。
即使是目前只使用 Django 用户认证系统的默认特性,推荐的作法也是新建一个应用,用于存放和用户功能相关的代码,为未来可能的功能拓展作准备。所以让咱们来新建一个应用,我习惯上把应用命名为 users。
$ python manage.py startapp users复制代码
新建的应用必定要记得在 settings.py 里注册,不然 Django 没法得知你新建了应用。
django_auth_example/settings.py
INSTALLED_APPS = [
# 其它应用列表...
'django.contrib.auth',
'django.contrib.contenttypes',
'users', # 注册新建的应用 users
]复制代码
OK,项目的基本准备工做到这里就结束了,接下来让咱们开始使用 Django 用户系统为咱们提供的功能吧!
本教程的示例项目代码位于 GitHub:Django Auth Example。
若是遇到问题,请经过下面的方式寻求帮助。
更多 Django 相关教程,请访问个人我的博客:追梦人物的博客。