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_user的表,当访问django自带的路由admin的时候,需要输入用户名和密码,其参照的就是auth_user表

使用python3 manage.py crataesupperuser 可以创建超级管理员用户,同时在auth_user表里面产生一条超级用户数据

1.1 auth模块的常用方法

from django.contrib import auth
# 1.比对用户名和密码是否正确
	user_obj = auth.authenticate(request,username=username,password=password)
	# 括号内必须同时传入用户名和密码
	print(user_obj)  # 返回的是用户对象  jason   数据不符合则返回None
	print(user_obj.username)  # jason
	print(user_obj.password)  # 结果为密文

# 2.保存用户状态
	auth.login(request,user_obj)  # 类似于request.session[key] = user_obj
	# 主要执行了该方法 你就可以在任何地方通过request.user获取到当前登陆的用户对象

# 3.判断当前用户是否登陆
	request.user.is_authenticated()
	登录了返回true,否则返回false

# 4.获取当前登陆用户对象
	user_obj=request.user

# 5.校验用户是否登陆的装饰器
	from django.contrib.auth.decorators import login_required
	# 局部配置
	@login_required(login_url='/login/')
	在需要装饰的函数上添加上述装饰器,括号里表示未登录则跳转到指定url
	# 在setting.py里进行全局配置
	LOGIN_URL = '/login/'
		1.如果局部和全局都有 该听谁的?
		局部 > 全局
		2.局部和全局哪个好呢?
		全局的好处在于无需重复写代码 但是跳转的页面却很单一
		局部的好处在于不同的视图函数在用户没有登陆的情况下可以跳转到不同的页面

# 6.比对原密码
	is_right=request.user.check_password(old_password)
	返回的是true或者false

# 7.修改密码
	request.user.set_password(new_password)  # 仅仅是在修改对象的属性
	request.user.save()  # 这一步才是真正的操作数据库

# 8.注销
	auth.logout(request)

# 9.注册
	# 操作auth_user表写入数据
	from django.contrib.auth.models import User #导入模块
	User.objects.create(username=username,password=password)  # 写入数据  不能用create 密码没有加密处理
	# 创建普通用户
	User.objects.create_user(username=username,password=password)
	# 创建超级用户(了解):使用代码创建超级用户 邮箱是必填的 而用命令创建则可以不填
	User.objects.create_superuser(username=username,email='123@qq.com',password=password)

1.2 如何扩展auth_user表

from django.db import models
from django.contrib.auth.models import User,AbstractUser

# 第一种方法:一对一关系(利用外键)  不推荐
# class UserDetail(models.Model):
#     phone = models.BigIntegerField()
#     user = models.OneToOneField(to='User')

# 第二种:面向对象的继承
class UserInfo(AbstractUser):
    """
    如果继承了AbstractUser
    那么在执行数据库迁移命令的时候auth_user表就不会再创建出来了
    而UserInfo表中会出现auth_user所有的字段外加自己扩展的字段
    这么做的好处在于你能够直接点击你自己的表更加快速的完成操作及扩展

    前提:
        1.在继承之前没有执行过数据库迁移命令
            auth_user没有被创建,如果当前库已经创建了那么你就重新换一个数据库
        2.继承的类里面不要覆盖AbstractUser里面的字段名
            表里面有的字段都不要动,只扩展额外字段即可
        3.需要在配置文件中告诉django你要用UserInfo替代auth_user(******)
            AUTH_USER_MODEL = 'app01.UserInfo'
                                '应用名.表名'
    """
    phone = models.BigIntegerField() # 需要添加的新字段

你如果自己写表替代了auth_user,那么auth模块的功能还是照常使用,参考的表页由原来的auth_user变成了UserInfo!

2.admin后台管理

django的admin管理后台提供了比较完善的管理数据库的接口

2.1 admin后台管理的准备工作

1.创建超级用户:python manage.py createsuperuser
2.进入127.0.0.1/admin --使用超级用户账号登录进行用户的增加或者组的增加
3.在app中的admin.py中导入注册自己要管理的模型类如:from . models import Book
4.admin.site.register(Book) # 注册语法,注册之后admin后台就可以对该表进行管理!!

2.2 为admin后台设置样式和增加数据

1.修改admin后台的表名

在该表对应的models类里面添加一个Meta类:
    class Meta:
        verbose_name_plural = '用户表' #指定该表在admin后台的名字为:用户表

2.在admin中为具体表增加数据

3.null=True,blank=True的区别

phone = models.BigIntegerField(verbose_name='手机号',null=True,blank=True)
    """
    null=True:是告诉数据库该字段可以为空,admin后台默认还是不允许为空
    blank=True:告诉admin后台该字段可以为空
    """

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

(0)

相关推荐

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

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

  • 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框架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 应用模块详解

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

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

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

  • 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中使用apscheduler 执行计划任务的实现方法

    对于任何软件开发人员而言,为将来计划任务都是必不可少的工具. 尽管我们创建的许多编程旨在响应明确的触发或用户事件,但定期执行的后台进程也同样重要. "每个星期一早晨更新结果." "每天晚上分批下单." 甚至具有每日请求限制的第三方API也隐式要求这种行为. "我们只能每五分钟请求一次更新." 幸运的是,许多聪明的人已经解决了这个问题,并且不难找到python本地解决方案. Advanced Python Scheduler(APS)是一个很好的选

  • Django中模型Model添加JSON类型字段的方法

    本文实例讲述了Django中模型Model添加JSON类型字段的方法.分享给大家供大家参考.具体如下: Django里面让Model用于JSON字段,添加一个JSONField自动类型如下: class JSONField(models.TextField): __metaclass__ = models.SubfieldBase description = "Json" def to_python(self, value): v = models.TextField.to_pytho

  • django中账号密码验证登陆功能的实现方法

    今天分享一下django的账号密码登陆,前端发送ajax请求,将用户名和密码信息发送到后端处理,后端将前端发送过来的数据跟数据库进行过滤匹配,成功就跳转指定页面,否则就把相对应的错误信息返回,同时增加一个小功能,在规定时间内超过规定的登录次数,就锁住无法登陆,等下一个时间段再允许登陆. 一.通过ORM创建一张历史登陆表 class login_history(models.Model): user = models.CharField(max_length=32, verbose_name='登

  • Laravel中的Auth模块详解

    前言 本文主要给大家介绍的是关于Laravel中Auth模块的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 本文是基于Laravel 5.4 版本的本地化模块代码进行分析书写: 模块组成 Auth模块从功能上分为用户认证和权限管理两个部分:从文件组成上,Illuminate\Auth\Passwords目录下是密码重置或忘记密码处理的小模块,Illuminate\Auth是负责用户认证和权限管理的模块,Illuminate\Foundation\Auth提供了登录.

  • django中ORM模型常用的字段的使用方法

    与数据类型相关的字段 CharField         作用:字符串字段, 用于较短的字符串.         参数:CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的最大字符数. IntegerField        作用:用于保存一个整数. CommaSeparatedIntegerField         作用:用于存放逗号分隔的整数值. 类似 CharField, 必须要有maxlength参数. FloatField

  • 在Django中限制已登录用户的访问的方法

    有很多原因需要控制用户访问站点的某部分. 一个简单原始的限制方法是检查 request.user.is_authenticated() ,然后重定向到登陆页面: from django.http import HttpResponseRedirect def my_view(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/accounts/login/?next=%s' % reque

  • 在Django中编写模版节点及注册标签的方法

    编写模板节点 编写自定义标签的第二步就是定义一个拥有 render() 方法的 Node 子类. 继续前面的例子,我们需要定义 CurrentTimeNode : import datetime class CurrentTimeNode(template.Node): def __init__(self, format_string): self.format_string = str(format_string) def render(self, context): now = dateti

  • 以JSON形式将JS中Array对象数组传至后台的方法

    业务是需要将前台jQuery easyUI DataGrid列表中所选的若干行的数据传到后台进行update操作 通常情况下我们会获取所选取行对象的ID,通过循环及简单封装拼凑成一个长String传送过去,并在Service层解释再通过findByID获取实例并update 但今次我们需要将整个对象群完整的传输至后台 其结构如下 选用谷歌的GSON插件及json2.js搭配使用 前台代码如下,简洁起见已去除部分简单验证代码: 复制代码 代码如下: var rows = $('#dg1').dat

  • Django中对数据查询结果进行排序的方法

    在你的 Django 应用中,你或许希望根据某字段的值对检索结果排序,比如说,按字母顺序. 那么,使用 order_by() 这个方法就可以搞定了. >>> Publisher.objects.order_by("name") [<Publisher: Apress>, <Publisher: O'Reilly>] 跟以前的 all() 例子差不多,SQL语句里多了指定排序的部分: SELECT id, name, address, city,

随机推荐