Django之Auth模块 实现登录,退出,自带session 与认证功能的一个重要的模块
Auth模板
1. 什么是Auth模块,有什么用?
django的auth的模块的使用: auth 是集合注册,登录,注销,session 多个功能集合在一起的模块
2. 使用Auth组件的默认auth_user表常用操作
from django.contrib.auth.models import User
# 1、创建普通用户
User.objects.create_user(username='Owen', password='') # 2、创建超级用户
User.objects.create_superuser(username='root', password='root', email='root@root.com') # 3、获取第一个用户
user = User.objects.first() # 4、修改密码
user.set_password('')
user.save() # 5、校验密码
res = user.check_password('')
Auth组件默认auth_user表常用操作
3. auth 组件的常用功能:
# 1、校验用户账号及密码,校验成功返回user对象
from django.contrib.auth import authenticate
user = authenticate(username=usr, password=pwd) # 2、注册用户到request对象中,注册成功可以request.user访问当前登录用户(会形成session记录)
from django.contrib.auth import login
login(request, user) # 注册authenticate成功(当前登录)的用户 # 3、注销当前注册的user (用户注销)
from django.contrib.auth import logout
logout(request)
Auth组件常用功能
例题: 检验第一个用户的密码
user = User.objects.first()
res = user.check_password('')
# 检验的结果是布尔值, True 或者是False 2. django 的检验用户的账号与密码是否正确的模块:
from django.contrib.auth import authenticate
user = authenticate(username=usr, password=pwd)
#校验用户账号及密码,校验成功返回user对象 3. django 的检验用户成功后的登录模块, 登录之后直接添加session的功能
from django.contrib.auth import login
login(request, user) # 注册authenticate成功(当前登录)的用户
#注册用户到request对象中,注册成功可以request.user访问当前登录用户(会形成session记录) 4. django 模块中的注销用户,用户注销 用户可以直接退出了,session会消失
from django.contrib.auth import logout
logout(request) 5. django 模块的检验用户是否登录的方法 # 视图函数中使用
if request.user.is_authenticated(): pass
# 模板语言中使用
{% if request.user.is_authenticated %}
{% else %}
{% endif %}
4. auth模块之检验用户是否登录,可以做装饰器用
from django.contrib.auth.decorators import login_required
@login_required(login_url='/user_login/')
def user_home(request):
return render(request, 'user.html', locals())
# 注意他返回的是/user_login/?next=/user_order/ 所以前面拿到的是'next'的key 就可以拿到返回值/user_order/
5. auth模块之给user_auth表添加额外的字段
6. 当发现auth模块的User表的信息太少,想自己添加信息的话: # 在models.py 内
from django.contrib.auth.models import AbstractUser class User(AbstractUser):
# 增加自定义字段
info = models.TextField(null=True)
phone = models.TextField(null=True) # settings.py配置
AUTH_USER_MODEL = 'app.User' # 下次在调用User表的话 就使用 from app.models import User
6. 通过auth组件实现前端实现用户登录跳出不同的页面的功能
7. 如何在前端显示 这个是谁的主页信息
<body>
<h1>{{ request.user.username }}的个人订单</h1>
</body>
# request.user 是拿到当前登录的对象,
# .username 是拿到当前对象的名字来显示 谁谁谁的的个人订单 8. 如何实现用户登录了就显示 个人主页与注销 没登录就显示 登录与注册
# 在前端写:
<p>
{% if request.user.is_authenticated %} #判断用户是否登录成功
<a href="/user_home/">{{ request.user.username }}</a> #如果登录成功显示 用户的名字
|
<a href="/user_logout/">注销</a> # 和注销
{% else %}
<a href="/user_login/">登录</a> #如果用户没登录, 显示登录
|
<a href="/user_register/">注册</a> # 和注册
{% endif %}
</p>
如何在前端显示 这个是谁的主页信息
简单的使用Auth组件完成用户的注册登录与判断验证+session的功能简单实现
from django.shortcuts import render, HttpResponse, redirect
# from django.contrib.auth.models import User
from app.models import User
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
from django.db.utils import IntegrityError def index(request):
return render(request, 'index.html', locals()) def user_login(request):
if request.method == "GET":
return render(request, 'login.html')
if request.method == "POST":
# 在请求url中通过next取出回跳的页面路径
back_url = request.GET.get('next', '/')
usr = request.POST.get('usr', None)
pwd = request.POST.get('pwd', None)
# 用前台传入的账户密码作登录校验
user = authenticate(username=usr, password=pwd) # type: User
if user:
# 在session中记录登录状态 => login(request, user)来记录登录状态
# request.session['usr'] = user.username
# request.session['is_login'] = True
login(request, user) return redirect(back_url) def user_logout(request):
logout(request)
return redirect('/') def user_register(request):
if request.method == "GET":
return render(request, 'register.html')
if request.method == "POST":
usr = request.POST.get('usr', None)
pwd = request.POST.get('pwd', None)
try:
User.objects.create_user(username=usr, password=pwd)
except IntegrityError as e:
print('注册失败:%s' % e)
return redirect('/') # 装饰器的页面返回key是next:/user_login/?next=/user_order/
@login_required(login_url='/user_login/')
def user_order(request):
return render(request, 'order.html', locals()) @login_required(login_url='/user_login/')
def user_home(request):
return render(request, 'user.html', locals())
课件案例简单实现
Django之Auth模块 实现登录,退出,自带session 与认证功能的一个重要的模块的更多相关文章
- Django之Auth认证模块
一.Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开发网站的时候,无可避免的需要设计实现网站的用户系统,此时我们需要实现包括用户注册,用户登陆,用户认证,注销修改密码等功能 ...
- Django 是如何实现用户登录和登出机制的(默认版本-数据库版本)
Django session 字典,保存到数据库的时候是要先序列化的(session.encode方法), 读取的时候反序列化(session.decode),这样比较安全. 一 settings.p ...
- 使用RequireJS并实现一个自己的模块加载器 (一)
RequireJS & SeaJS 在 模块化开发 开发以前,都是直接在页面上引入 script 标签来引用脚本的,当项目变得比较复杂,就会带来很多问题. JS项目中的依赖只有通过引入JS的顺 ...
- Django进阶-auth集成认证模块
auth认证模块是Django内置集成的一个用户认证模块. auth认证模块方法 方法 释义 auth.authenticate() 认证校验 auth.login(request,user) 封装认 ...
- (30)auth模块(django自带的用户认证模块)
Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的 ...
- Django权限auth模块详解
转自:http://www.cnblogs.com/Finley/p/5575305.html 1,auth模块是Django提供的标准权限管理系统,可以提供用户身份认证,用户组和权限管理 2,aut ...
- Django之auth模块用户认证模块
一.Auth模块 1)auth模块是什么.登录后台使用的账号密码,则就是使用的auth模块创建的表 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站 ...
- Django组件(四) Django之Auth模块
Auth模块概述 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能 ...
- Django之auth模块(用户认证)
auth模块简介 auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象, 而有了auth模块之后就可以很轻松的去验证用户的 ...
随机推荐
- asp.net 网页跳转的几种常用方法
Response.Redirect("http://www.baidu.com",false); 后面的bool值为是否停止执行当前页.跳转向新的页面,原窗口被代替.浏览器中的UR ...
- 剑指Offer 10. 矩形覆盖 (递归)
题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 题目地址 https://www.nowcoder.com/ ...
- HTML/overflow的认识
1.overflow的定义:overflow属性规定当内容溢出元素框时应该做的处理.2.overflow:scorll; 是提供一种滚动的机制.3.关于overflow的其他相关值设置:
- [LeetCode&Python] Problem 744. Find Smallest Letter Greater Than Target
Given a list of sorted characters letters containing only lowercase letters, and given a target lett ...
- (32)forms组件(渲染自建规则:局部钩子函数和全局钩子函数)
要达成渲染自建规则 1.局部钩子函数(某个字段,自定意义规则,不如不能以sb开头,数据库已存在等) 2.全局钩子函数(校验两次密码是否一致) 3.使用css样式 register.html <! ...
- RESTful Loads
RESTful 一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 概述 ...
- PythonStudy——函数的参数 Function argument
形参与实参 # 参数介绍:# 函数为什么要有参数:因为内部的函数体需要外部的数据# 怎么定义函数的参数:在定义函数阶段,函数名后面()中来定义函数的参数# 怎么使用函数的参数:在函数体中用定义的参数名 ...
- CentOS 7 快速部署 ELK
先简单说一下部署思路及原理(不一定正确,只是个人理解而已) 1.修改系统参数,以便安装软件 2.安装配置elasticsearch,这个相当于总监测中心,用来收集logstash监测的各种服务应用日志 ...
- MySQL Execution Plan--NOT EXISTS子查询优化
在很多业务场景中,会使用NOT EXISTS语句来确保返回数据不存在于特定集合,部分场景下NOT EXISTS语句性能较差,网上甚至存在谣言"NOT EXISTS无法走索引". 首 ...
- redis性能提升之pipeline
1.以前正常使用过程 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命令并将响应发送回客户端. 也就是每个命令都会有一来以往的过程 2.管道的意义 如果能将连续 ...