网站提供登录、注册等用户认证功能是一个常见的需求。因此,Django 提供了一套功能完整的、灵活的、易于拓展的用户认证系统:django.contrib.auth。在本教程中,我将向你展示 auth 模块的基本用法,例如如何提供用户注册、登录、修改密码、找回密码等功能;如何拓展 auth 内置的 User 模型;如何自定义用户验证后台,以支持用户使用诸如邮箱手机号等用户名登录(默认只支持使用用户名登录)等等。

开启一个新的 Django 工程

推荐新建一个 Django 工程来作为演示或者作为练习,以免把已有的项目搞乱了。本教程的演示项目基于最新版 Django 1.11.1 和 Python 3.5,不过对于其它的 Django 和 Python 同样适用。首先在 Python 环境下安装 Django(推荐使用虚拟环境,如何使用虚拟环境可以参考 搭建 Django 开发环境。接下来使用 Django 提供的命令建立一个新的工程,我把它命名为 django_auth_example。

$ django-admin startproject django_auth_example

工程建好了,目录结构如下:

django_auth_example/
manage.py
django_auth_example/
__init__.py
settings.py
urls.py
wsgi.py

必要的配置

Django 在新建工程时已经为使用用户认证系统做好了全部必要的配置。不过有可能你并非使用 django-admin 命令新建的工程,或者你使用的是一个正在开发中的项目,因此最好再检查一下 settings.py 文件中是否已经做好了全部必要配置。

首先检查一下必要的应用是否已经在 INSTALLED_APPS 配置里列出:

django_auth_example/settings.py

INSTALLED_APPS = [
# 其它应用列表...
'django.contrib.auth',
'django.contrib.contenttypes',
]

为了使用用户认证系统,必须安装以下两个应用:

  • django.contrib.auth
  • django.contrib.contenttypes

django.contrib.contenttypes 是 auth 模块的用户权限处理部分依赖的应用。

其次需要在中间件 MIDDLEWARE 配置里列出以下两个中间件:

  • SessionMiddleware 用户处理用户会话。
  • AuthenticationMiddleware 绑定一个 User 对象到请求中(具体将在后面介绍)。

即像下面这样的配置:

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 用户系统为我们提供的功能吧!

django用户认证系统——基本设置1的更多相关文章

  1. django用户认证系统——拓展 User 模型

    Django 用户认证系统提供了一个内置的 User 对象,用于记录用户的用户名,密码等个人信息.对于 Django 内置的 User 模型, 仅包含以下一些主要的属性: username,即用户名 ...

  2. “Django用户认证系统”学习资料收集

    首推追梦人物——Django用户认证系统 待续……

  3. django用户认证系统——重置密码7

    当用户不小心忘记了密码时,网站需要提供让用户找回账户密码的功能.在示例项目中,我们将发送一封含有重置用户密码链接的邮件到用户注册时的邮箱,用户点击收到的链接就可以重置他的密码,下面是具体做法. 发送邮 ...

  4. django用户认证系统——修改密码6

    再此之前我们已经完成了用户登录.注册.注销等功能,接下来让我们继续为用户提供修改密码的功能.该功能 Django 的 auth 应用也已经为我们提供,过程几乎和之前的登录功能完全一样. 编写修改密码模 ...

  5. django用户认证系统——拓展 User 模型2

    Django 用户认证系统提供了一个内置的 User 对象,用于记录用户的用户名,密码等个人信息.对于 Django 内置的 User 模型, 仅包含以下一些主要的属性: username,即用户名 ...

  6. django用户认证系统——登录4

    用户已经能够在我们的网站注册了,注册就是为了登录,接下来我们为用户提供登录功能.和注册不同的是,Django 已经为我们写好了登录功能的全部代码,我们不必像之前处理注册流程那样费劲了.只需几分钟的简单 ...

  7. D django 用户认证系统

    django认证系统包含三个部分:用户.权限和分组 安装 django项目默认启用了认证系统,如果不是使用django-admin.py创建项目的可以通过在settings配置文件里面的INSTALL ...

  8. Django用户认证系统(二)Web请求中的认证

    在每个Web请求中都提供一个 request.user 属性来表示当前用户.如果当前用户未登录,则该属性为AnonymousUser的一个实例,反之,则是一个User实例. 你可以通过is_authe ...

  9. Django用户认证系统(一)User对象

    User对象 User对象是认证系统的核心.用户对象通常用来代表网站的用户,并支持例如访问控制.注册用户.关联创建者和内容等.在Django认证框架中只有一个用户类,例如超级用户('superuser ...

随机推荐

  1. 06-编写Hibernate API编写访问数据库的代码,使用Junit进行测试

    用到的注解: @Test:测试方法 @Before:初始化方法. @After:是否资源. 先执行Befere,然后执行Test,最后执行After. 第一步:新建一个Junit目录. 第二步:取名 ...

  2. 使用原生js将轮播图组件化

    代码地址如下:http://www.demodashi.com/demo/11316.html   这是一个轮播图组件,这里是代码地址,需要传入容器的id和图片地址,支持Internet Explor ...

  3. 在Docker中执行web应用

    启动一个简单的web 应用 使用社区提供的模板,启动一个简单的web应用,熟悉下各种Docker命令的使用: # docker run -d -P training/webapp python app ...

  4. 插入排序(PHP,C)

    PHP<?php /* ** 功能:插入算法 ** 描述: ** 作者:yuwensong */ function insertSorting($arr,$n){ for($i = 1; $i& ...

  5. HTML5学习笔记1 HTML5 新元素

    自1999年以后html4.0已经改变了很我,今天,在html4.01中的几个已经被废弃,这些元素在html5中已经被删除或重新定义. 为了更好地处理今天的互联网应用,html5添加了很多新元素及功能 ...

  6. &lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第11章 | 文件和素材

    打开文件 open(name[mode[,buffing]) name: 是强制选项,模式和缓冲是可选的 #假设文件不在.会报以下错误: >>> f = open(r'D:\text ...

  7. springMVC中实现用户登录权限验证

    通过上网搜资料显示,使用filter和interceptor都可以实现.不过推荐使用interceptor. 下面就使用Interceptor实现用户登录权限验证功能. 拦截器需要实现Inceptor ...

  8. Freeswitch中文用户手册(第四章 SIP)----2

    通过 B2BUA 呼叫 在真实世界中,bob 和 alice 肯定要经常改变位置,那么它们的 SIP 地址也会相应改变,并且,如果他们之中有一个或两个处于 NAT 的网络中时,直接通信就更困难了.所以 ...

  9. unity, rigidbody实现瞬移必须勾选is Kinematic

    用itween让一个绑定了rigidbody的沿曲线移动,当移动到末端时瞬间返回起始状态重新播放. 发现在不勾选isKinematic的情况下是不可能实现上述需求的.因为在动力学模式下任何物体的位置和 ...

  10. 计算机系统监控 PerformanceCounter

    PerformanceCounter 컴퓨터 성능 머니터링 CUP Processor 메모리 하터웨어 DB (CPU,User Connection,Batch Request,Blocking ...