Django auth 应用模块详解

目录
  • Django auth 应用模块
  • 一,Django的auth模块
  • 二,auth应用模块的其他作用
  • 三,auth模块总结

Django auth 应用模块

在设计开发任何一个站点的时候都需要有“用户”的概念,从用户的注册、登陆、退出或者注销,到用户的浏览、订阅等,这些都需要用户管理系统来实现。如果没有时间积累和相关开发工作经验,设计一个优秀的用户系统是很困难的。那么 Django 又是如何解决这个问题的呢?

一,Django的auth模块

Django 作为功能完善的 Web 框架充分考虑到这一点,它提供的 auth 模块能够快速的实现用户模块的基本功能。

新建项目后,Django 就把 auth 模块的所有功能提供给了开发者使用,开发者可以调用相应的接口,实现不同的功能需求。auth 模块定义了一张名叫 auth_user 的数据表,该表是 auth 模块的内建用户表,开发者调用 auth 模块的相应接口生成此表,auth_user 表的字段以及字段类型,如下所示。

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      | NO   | PRI | NULL    | auto_increment |
| password     | varchar(128) | NO   |     | NULL    |                |
| last_login   | datetime(6)  | YES  |     | NULL    |                |
| is_superuser | tinyint(1)   | NO   |     | NULL    |                |
| username     | varchar(150) | NO   | UNI | NULL    |                |
| first_name   | varchar(30)  | NO   |     | NULL    |                |
| last_name    | varchar(150) | NO   |     | NULL    |                |
| email        | varchar(254) | NO   |     | NULL    |                |
| is_staff     | tinyint(1)   | NO   |     | NULL    |                |
| is_active    | tinyint(1)   | NO   |     | NULL    |                |
| date_joined  | datetime(6)  | NO   |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+
11 rows in set (0.02 sec)#auth_user表

现在新建一张 auth_user 用户表,并为此表添加一个新用户 user。首先用如下方式引入 auth模块的 User 方法:

from django.contrib.auth.models import User
然后通过下面方法创建新用户 user ,如下所示:

user=User.objects.create_user(username='JB51',password='123456',email='123456@qq.com')
save()#调用该方法保存数据 

同时也可以使用如下方法修改密码:

user.set_password(password='12345abc')#会对原密码进行修改

根据具体的业务需求,还可以对表的字段进行增加、删除、更改。

当涉及到用户概念的时候也会产生用户权限问题,比如,如何划分普通用户和超级管理员用户?针对权限问题,Django 也提供了解决问题的方案,auth 模块提供了标准的权限管理系统,它配合 Admin 后台可以快速建立网站管理系统。

auth 模块提供了认证用户功能,可以用下面方式引入后使用:

from django.contrib.auth import authenticate
然后使用关键字传参的方法来传递用户凭证,从而达到用户认证的目的:

user = authenticate(username='CSDN',password='12345abc')

二,auth应用模块的其他作用

auth 模块还实现一些其它的功能,比如:

  • 用户的登录(login)、退出(logout)功能,封装在 django.contrib.auth 里;
  • 用户权限系统封装在 django.contrib.auth.models.Permission 中 ,可以对用户的权限进行增加、修改、删除;
  • 用户组可以通过 from django.contrib.auth.models.Group 导入后来创建组或者删除组。

列举一些简单应用方法:

user.user_permission.add(permission)#给某个用户权限的添加权限
group = Group.objects.create(name=group_name)#添加新的用户组
group.save() #保存新建好的用户组
group.delete()#删除用户组

三,auth模块总结

auth 模块提供的主要功能总结如下:

  • 实现并维护了用户与用户组的增加、删除、更改功能;
  • 实现了用户权限与用户组权限的增加、删除、更改;
  • 实现了可以自定义用户权限与用户组权限功能。

除了以上功能外,Django auth 模块还提供了权限验证等功能以及一些常用的方法。

auth 模块帮助开发人员提高了工作效率,因为每个 Web 站点的权限管理模块或者用户管理模块基本都是相同的逻辑,Django 的 auth 模块使开发者们不必在为一些重复性的逻辑进行构建。在实际开发工作中,用户模块与权限管理模块需要与实际相结合,开发者可以根据业务需求自定义或者重写相应方法,以达到和实际业务相契合的目的。

到此这篇关于Django auth 应用模块的文章就介绍到这了,更多相关Django auth 应用模块内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Django框架CBV装饰器中间件auth模块CSRF跨站请求问题

    CBV添加装饰器 给CBV添加装饰器有三种方法,三种方法都需要导入模块: from django.utils.decorators import method_decorator 第一种直接在方法上面添加: from django.utils.decorators import method_decorator class MyLogin(View): @method_decorator(auth) def get(self, request): return HttpResponse('Is

  • 详解Django之auth模块(用户认证)

    auth模块简介 auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象, 而有了auth模块之后就可以很轻松的去验证用户的登录信息是否存在于数据库中. 除此之外,auth还对session做了一些封装,方便我们校验用户是否已登录 auth里的方法 如果想使用auth模块的方法,必须要先导入auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法

  • Django实现auth模块下的登录注册与注销功能

    看了好多登录注册和注销的教程,很乱,很迷,然后总结了一下,简单的做了一个登录,注册和注销的页面. 1,首先,使用pycharm创建一个项目 单击File -> 选中Django -> 在右侧Location选中所需的路径,或直接在框里命名 2,现在,你有了一个Django项目 你需要单击左下方的Terminal 创建一个app,命令:python  manage.py startapp Myapp(命名不做要求) 创建一个存放静态文件的文件夹:static(默认为该命名) 项目如下: 3,在W

  • django框架auth模块用法实例详解

    本文实例讲述了django框架auth模块用法.分享给大家供大家参考,具体如下: auth模块的导入 from django.contrib import auth django中的auth模块有其自己完整的一套方法: 登录验证.注销.用户的创建.比较用户输入的密码是否和数据库的一致.用户信息的修改 1 我们来生成db.sqlite3 (migrations,migrate),打开,从中我们可以找到表 auth_user ,整篇都是围绕这个表进行的 2  这个表里面暂时是空的,我们可以创建 ,例

  • Django框架基础认证模块auth应用示例

    目录 1. auth介绍 2. autho常用操作 2.1 创建用户 2.2 验证用户 2.3 验证用户是否登录 2.4 已验证的用户想附加到当前会话 2.5 快捷增加登录校验装饰器 2.6 退出登录 2.7 检查密码 2.8 修改密码 2.9. 示例:利用auth模块搭建登录才能访问和有退出功能的页面 2.10 User对象的is_staff和is_active 3. 扩展默认的auth_user表 3.1 方案一: 一对一扩展 3.2 方案二: 继承AbstractUser类扩展 1. au

  • django中的auth模块与admin后台管理方法

    目录 1. auth模块 1.1 auth模块的常用方法 1.2 如何扩展auth_user表 2.admin后台管理 2.1 admin后台管理的准备工作 2.2 为admin后台设置样式和增加数据 1. auth模块 auth模块是对登录认证方法的一种封装,本身就是一个对象,可以获取用户的详细信息,有了auth模块可以验证登录信息是否存在数据库中,还可以检验用户是否已经登录,校验密码等. 在创建完django项目之后,执行数据库迁移之后,数据库里会增加很多新表,其中有一张名为auth_use

  • Django auth 应用模块详解

    目录 Django auth 应用模块 一,Django的auth模块 二,auth应用模块的其他作用 三,auth模块总结 Django auth 应用模块 在设计开发任何一个站点的时候都需要有“用户”的概念,从用户的注册.登陆.退出或者注销,到用户的浏览.订阅等,这些都需要用户管理系统来实现.如果没有时间积累和相关开发工作经验,设计一个优秀的用户系统是很困难的.那么 Django 又是如何解决这个问题的呢? 一,Django的auth模块 Django 作为功能完善的 Web 框架充分考虑到

  • 基于Django contrib Comments 评论模块(详解)

    老版本的Django中自带一个评论框架.但是从1.6版本后,该框架独立出去了,也就是本文的评论插件. 这个插件可给models附加评论,因此常被用于为博客文章.图片.书籍章节或其它任何东西添加评论. 一.快速入门 快速使用步骤: 安装包:pip install django-contrib-comments 在django的settings中的INSTALLED_APPS处添加'django.contrib.sites'进行app注册,并设置SITE_ID值. 在django的settings中

  • Python Django 封装分页成通用的模块详解

    这篇文章主要介绍了Python Django 封装分页成通用的模块详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 新建 utils 文件夹,并创建 page.py page.py: class ShowPage(object): def __init__(self, page_num, total_count, url_prefix, per_page=10, max_page=11): ''' :param page_num: 当前页码数

  • django 常用orm操作详解

    Django流程: 1 创建Django项目 : django-admin startproject projectname 2 创建应用: : python manage.py startapp appname 3 在控制器(urls.py)创建 url 与 视图函数的映射关系(一一对应) 4 创建视图函数,完成逻辑代码 5 从数据库取出集合对象 5 把数据库变量嵌入到模板进行渲染(render方法) 6 将渲染后的html页面返回给客户端 URL:协议+域名+端口+路径 协议:http 域名

  • 关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的module模块中.就这样的话,pthon提供的module还是海量的,所以除非使用某个模块里的某个函数时才会将其导入程序中.所以你使用某个函数前,要先知道他在哪个module里,然后将这个模块导入当前程序,然后才能调用这个模块里的函数. 当然 python的模块分为用户自定义的和系统提供的.Pyth

  • 对Django的restful用法详解(自带的增删改查)

    什么是rest REST是所有Web应用都应该遵守的架构设计指导原则. Representational State Transfer,翻译是"表现层状态转化". 面向资源是REST最明显的特征,对于同一个资源的一组不同的操作.资源是服务器上一个可命名的抽象概念,资源是以名词为核心来组织的,首先关注的是名词. REST要求,必须通过统一的接口来对资源执行各种操作.对于每个资源只能执行一组有限的操作. GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT(PATCH)用

  • Django项目使用ckeditor详解(不使用admin)

    效果图: 1.安装django-ckeditor pip install django-ckeditor 如果需要上传图片或者文件,还需要安装pillow pip install pillow 2.配置模型字段 如果编辑器需要上传图片或者文件,需要引入RichTextUploadingField,否则只需要引入RichTextField from ckeditor_uploader.fields import RichTextUploadingField class Activity(model

  • Django 自定义权限管理系统详解(通过中间件认证)

    1. 创建工程文件, 修改setting.py文件 django-admin.py startproject project_name 特别是在 windows 上,如果报错,尝试用 django-admin 代替 django-admin.py 试试 setting.py 最终的配置文件 import os import sys # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR =

  • 在脚本中单独使用django的ORM模型详解

    有时候在测试django中一些模块时,不想重新跑一整个django项目,只想跑单个文件,正好写在if __name__ == '__main__': 这样也不会打扰到正常的代码逻辑 方法 正常方法 大家都知道的方法就是'python manage.py shell',当然我知道这可能不是你需要的: 更好用的方法 在脚本中import模型前调用下面几行即可: import os, sys BASE_DIR = os.path.dirname(os.path.abspath(__file__)) #

  • Python自动重新加载模块详解(autoreload module)

    守护进程模式 使用python开发后台服务程序的时候,每次修改代码之后都需要重启服务才能生效比较麻烦. 看了一下Python开源的Web框架(Django.Flask等)都有自己的自动加载模块功能(autoreload.py),都是通过subprocess模式创建子进程,主进程作为守护进程,子进程中一个线程负责检测文件是否发生变化,如果发生变化则退出,主进程检查子进程的退出码(exist code)如果与约定的退出码一致,则重新启动一个子进程继续工作. 自动重新加载模块代码如下: autorel

随机推荐