首页 > 其他分享 >Django之Auth模块

Django之Auth模块

时间:2023-08-12 15:01:16浏览次数:31  
标签:登录 request auth Django Auth 模块 login user

一、Auth模块的使用

1、Auth模块是Django自带的用户认证模块:

开发一个网站无可避免的需要设计实现网站的用户系统。需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能。

Django内置了强大的用户认证系统–auth,它默认使用 auth_user 表来存储用户数据。

2、创建后台管理员

前提是迁移过数据库,有auth_user 表。注意python得版本

/usr/bin/python3  manage.py  createsuperuser

二、Auth模块的认证和登录

1、views

auth.authenticate  验证用户名和密码 和  auth.login 自动登录保存会话状态

def login(request):
    if request.method == 'POST':
        # 接收前端传过来的数据
        username = request.POST.get('username')
        password = request.POST.get('password')
        # 第二步验证用户名和面是否正确
        # 1. 我们去哪个表中查询数据 2. 使用这张表中的哪个字段来比较
        # 验证用户名和密码
        user_obj = auth.authenticate(request, username=username, password=password)
        print(user_obj)  # None
        print(user_obj)  # root 管理员登录成功之后的用户对象
        """
            注意事项:传递参数的时候,用户名和密码必须同时传入
        """
        #########################要么全部使用auth模块的方法,要么全部自己写,,一定别混合使用
        if user_obj:  # 验证成功,执行下面的代码
            auth.login(request, user_obj) 
            ### 只要写了auth.login,那么就可以在全局任何有request对象第地方通过request.user拿到用户的对象
            return redirect('/admin/')
    return render(request, 'login.html')

auth.login() 会自动登录保存session状态

浏览器查看session

数据库查看session

2、login_required装饰器和 request.user.is_authenticated 方法

from django.contrib.auth.decorators import login_required

# # http://127.0.0.1:8000/accounts/login/?next=/order/
# # @login_required # :http://127.0.0.1:8000/accounts/login/?next=/order/
# '''
#     当局部和全局(setting.py中)都存在的时候,按局部的
#     如果局部没有,按照全局的
# '''
@login_required(login_url='/login/')  # 没有登录的话跳转到指定的页面
def order(request):
    # 验证用户是否已经登录
    print(request.user.is_authenticated)  # True  False
    # if request.user.is_authenticated:
    #     # 处理登陆之后的逻辑
    #     pass
    # else:
    #     pass
    # 没有登录,跳转登录页面
    return HttpResponse("order")

使用装饰器login_required,如果没有登录,跳转到登录页面

删除session,访问order页面失败,说明auth.login自动处理了session。 

三、Auth模块之退出系统

1、

 

 

2、

 

四、Auth模块之修改密码功能

1、

2、

3、

 

五、Auth模块之注册功能

1、

2、

3、

六、扩展默认的auth_user表

1、

2、

3、

标签:登录,request,auth,Django,Auth,模块,login,user
From: https://www.cnblogs.com/dgp-zjz/p/17623719.html

相关文章

  • Maven多模块构建加速方案
    Maven多模块构建加速方案          拥有大量Maven模块会减慢项目构建和测试运行速度。为了维护多模块项目结构并快速运行测试,我们开发了一个新工具--Maven模块合并器,它帮助我们将某些构建时间从50分钟缩短到12分钟。在本文中,我将详细介绍Maven模块合并器帮......
  • 【Django】request请求设置
    1.GET请求#query请求defget(self,request):print(request.GET)res=[]#最终返回的结果集合search_field=request.GET.get('search_field','')page_index=request.GET.get('page_index',1)......
  • Pycharm用virtualenv创建Django
    解决Pycharm用virtualenv创建Django一.问题描述用Pycharm的虚拟环境下(virtualenv)创建Django,报错:FileNotFoundError:[Errno2]Nosuchfileordirectory:'E:\Anaconda\lib\venv\scripts\nt\python.exe'二.报错原因在网上找到的产生这个问题的原因是:这是一个调试二进制......
  • 关闭ESlint/路径起别名/配置前端代理/引入模块报错
    怎么关闭ESlint语法检查(不建议)vue-cli创建的项目,在vue.config.js​文件里面//vue.config.jsconst{defineConfig}=require('@vue/cli-service');module.exports=defineConfig({lintOnSave:false,})vite创建的项目,在vite.config.js​文件里面import......
  • 不了解sys库也敢说Python行?sys模块这些用法你需要知道
    前言“不会用sys模块的Python程序员,和不会开车的司机一样令人捉急。”这句话一点没错,因为sys模块可以让你快速做到:解析命令行参数在运行Python程序时,我们可以在命令行中传递不同的参数,如果不用sys.argv来获取,你将很难处理程序输入。获取Python解释器信息要获取当前运行环境......
  • Auth模块的使用
    Auth模块的使用Auth模块:Auth模块是Django自带的用户认证模块我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统。此时我们需要实现包括用户注册、用户登录、用户认证、注销、修改密码等功能,这还真是个麻烦的事情呢。Django作为一个完美主义者的终极框架,当然也......
  • MT6753|MTK6753核心板_安卓4G模块性能参数
    MT6753/MTK6753是一款64位8核高性能的4G全网通安卓智能模块。这款模块支持多种网络制式,包括2G/3G/4G移动、联通、电信等。它是面向全球市场的智能无线通信模块,支持TDD-LTE/FDD-LTE/WCDMA/TD-SCDMA/EVDO/CDMA1X/GSM等七种网络制式。MT6753/MTK6753核心板内置了64位8核A53架构的CPU,拥......
  • E710四通道测温模块的特性及应用
    E710四通道测温模块是一款高性能的嵌入式读写模块,完全自主知识产权设计,结合专有的高效碰撞处理算法,在保持高识读率的同时,实现对电子标签的快速读写处理,准确读取RFID测温芯片的数据,可广泛应用电网高压变电、低压配电设施的关键温度监测点,机房、产线、设备等需要温度监测点等多种无......
  • MT6853天玑720MTK安卓核心板_5G智能模块安卓主板开发板定制
    联发科MT6853天玑720安卓核心板采用台积电7nm制程的5GSoC,具有先天的节能创新是同类产品中效率最高的5G芯片。除了完全集成的5G调制解调器,联发科5GUltraSave提供了一系列额外的节能技术。Dimensity720比替代芯片具有更快的LPDDR4X和更快的UFS2.2级存储。与八核CPU一起,具有两个强......
  • Django之CBV装饰器、中间件、csrf跨站请求
    一、CBV装饰器要求:访问CBV函数视图需要先登录1、含cookie的装饰器#登录认证装饰器cookie版deflogin_auth(func):definner(request,*args,**kwargs):ifrequest.COOKIES.get('username'):returnfunc(request,*args,**kwargs)else......