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 与认证功能的一个重要的模块的更多相关文章

  1. Django之Auth认证模块

    一.Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开发网站的时候,无可避免的需要设计实现网站的用户系统,此时我们需要实现包括用户注册,用户登陆,用户认证,注销修改密码等功能 ...

  2. Django 是如何实现用户登录和登出机制的(默认版本-数据库版本)

    Django session 字典,保存到数据库的时候是要先序列化的(session.encode方法), 读取的时候反序列化(session.decode),这样比较安全. 一 settings.p ...

  3. 使用RequireJS并实现一个自己的模块加载器 (一)

    RequireJS & SeaJS 在 模块化开发 开发以前,都是直接在页面上引入 script 标签来引用脚本的,当项目变得比较复杂,就会带来很多问题. JS项目中的依赖只有通过引入JS的顺 ...

  4. Django进阶-auth集成认证模块

    auth认证模块是Django内置集成的一个用户认证模块. auth认证模块方法 方法 释义 auth.authenticate() 认证校验 auth.login(request,user) 封装认 ...

  5. (30)auth模块(django自带的用户认证模块)

    Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的 ...

  6. Django权限auth模块详解

    转自:http://www.cnblogs.com/Finley/p/5575305.html 1,auth模块是Django提供的标准权限管理系统,可以提供用户身份认证,用户组和权限管理 2,aut ...

  7. Django之auth模块用户认证模块

    一.Auth模块 1)auth模块是什么.登录后台使用的账号密码,则就是使用的auth模块创建的表 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站 ...

  8. Django组件(四) Django之Auth模块

    Auth模块概述 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能 ...

  9. Django之auth模块(用户认证)

    auth模块简介 auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象, 而有了auth模块之后就可以很轻松的去验证用户的 ...

随机推荐

  1. guava-retrying 源码解析(时间限制策略)

    一.时间限制策略相关接口和类 什么是时间限制策略呢?是指在一个时间限制内,包装任何一种重试(尝试)规则,如果超过该限制,那么这个尝试规则可能会被中断,并抛出UncheckedTimeoutExcept ...

  2. SIMTRACE环境搭建

    搭建simtrace环境 工具环境搭建 仅作参考,具有时效性,请以官方文档为准. 跨平台编译工具arm-elf 参考链接:https://osmocom.org/projects/baseband/w ...

  3. 记解决一次“HTTP Error 400. The request URL is invalid”的错误

    今天将图片服务切到使用了cdn的机器上面去,然后就部分图片报如下图错误“HTTP Error 400. The request URL is invalid” 看到这种错误信息,一般的开发者心中可能会 ...

  4. 二,编程语言类别,和python变量基础

    编程语言类别 机器语言:由二进制组成,直接控制操作硬件,执行效率高,开发效率低. 汇编语言:用英文代替二进制,直接操作控制硬件,执行效率高,开发效率低. 高级语言: 编译型,如C语言,类似谷歌翻译,先 ...

  5. python:3种爬虫的优缺点

                                                                 性能对比            爬取方法            性    能 ...

  6. SpringBoot下如何配置实现跨域请求?

    一.什么是跨域请求? 跨域请求,就是说浏览器在执行脚本文件的ajax请求时,脚本文件所在的服务地址和请求的服务地址不一样.说白了就是ip.网络协议.端口都一样的时候,就是同一个域,否则就是跨域.这是由 ...

  7. s21day10 python笔记

    s21day10 python笔记 一.函数补充 1.1 参数 基本参数知识 def get_list_date(aaa): #aaa:形式参数(形参) 任意个数 v = [11,22,33,44] ...

  8. jquery中filter的用法

    一.filter的参数类型可分为两种 1.传递选择器 $('a').filter('.external') 2.传递过滤函数 $('a').filter(function(index) {       ...

  9. 导入导出Oracle

  10. PythonStudy——进制 System of numeration

    十进制 人类天然选择了十进制. 二进制 二进制有两个特点:它由两个数码0,1组成,二进制数运算规律是逢二进一. 四进制 四进制是以4为基数的进位制,以 0.1.2 和 3 四个数字表示任何实数. 七进 ...