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模块之后就可以很轻松的去验证用户的 ...
随机推荐
- ui自动化:python+appium----环境搭建
前言: appium可以说是app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本支持java和python.以下为python+appium的安装教程... 环境准备... ...
- VS Code 工具配置和格式化
{ "onSave": true, "javascript": { "indent_size": 2, "indent_char& ...
- Canvas名侦探柯南-canvas练习
var canvas=document.getElementById("canvas"); var ctx=canvas.getContext("2d"); / ...
- iOS 弹幕制作
离职的最后一天,在公司学习下弹幕的制作.基于OC. 主要思路: 1.首先建一个弹幕类BulletView,基于UIView,然后在该类上写个UIlabel,用于放置弹幕文字,然后前端放置一个UIIma ...
- Python全栈之路----数据类型—列表
1.列表是一个数据的集合,集合内可以放任何数据类型,可对集合进行方便的增删改查操作.列表里面的数可以重复. L1 = [ ] #定义空列表 L2 = [ 'a' , 'b' , 'c' , 'd' ] ...
- 二维数组的查找(JAVA)
二维数组查找 解题思路:找到该二维数组的特殊点,易知该二维数组左下角的那个点很特殊.从这个点往右看,数值都在变大:而往上看,数值都在变小.所以 我们可以将这个点的索引设为起点(i,j),当比目标数大时 ...
- [转]MyBatis动态传入表名、字段名参数的解决办法
一直在使用Mybatis这个ORM框架,都是使用mybatis里的一些常用功能.今天在项目开发中有个业务是需要限制各个用户对某些表里的字段查询以及某些字段是否显示,如某张表的某些字段不让用户查询到.这 ...
- Logistic Loss的简单讨论
首先应该知道Logistic Loss和Crossing Entropy Loss本质上是一回事. 所以所谓的SoftMaxLoss就是一般二分类LogisitcLoss的推广.之所以在网络中采取这种 ...
- 一次Windows 安装问题
在 thinpad x250上安装 windows 10时,提示"安装程序无法创建新的系统分区,也无法定位现有系统分区". x250 的主板上自带一个16G的闪存且标识为 主分区, ...
- python永久添加环境变量
import sys sys.path 系统环境是一个list,可以将自己需要的库添加进入,例如mysql库,hive库等等.有三种方式添加,均验证通过: 1 临时添加,在一个shell窗口中 ...