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. asp.net 网页跳转的几种常用方法

    Response.Redirect("http://www.baidu.com",false); 后面的bool值为是否停止执行当前页.跳转向新的页面,原窗口被代替.浏览器中的UR ...

  2. 剑指Offer 10. 矩形覆盖 (递归)

    题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 题目地址 https://www.nowcoder.com/ ...

  3. HTML/overflow的认识

    1.overflow的定义:overflow属性规定当内容溢出元素框时应该做的处理.2.overflow:scorll; 是提供一种滚动的机制.3.关于overflow的其他相关值设置:

  4. [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 ...

  5. (32)forms组件(渲染自建规则:局部钩子函数和全局钩子函数)

    要达成渲染自建规则 1.局部钩子函数(某个字段,自定意义规则,不如不能以sb开头,数据库已存在等) 2.全局钩子函数(校验两次密码是否一致) 3.使用css样式 register.html <! ...

  6. RESTful Loads

    RESTful 一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 概述 ...

  7. PythonStudy——函数的参数 Function argument

    形参与实参 # 参数介绍:# 函数为什么要有参数:因为内部的函数体需要外部的数据# 怎么定义函数的参数:在定义函数阶段,函数名后面()中来定义函数的参数# 怎么使用函数的参数:在函数体中用定义的参数名 ...

  8. CentOS 7 快速部署 ELK

    先简单说一下部署思路及原理(不一定正确,只是个人理解而已) 1.修改系统参数,以便安装软件 2.安装配置elasticsearch,这个相当于总监测中心,用来收集logstash监测的各种服务应用日志 ...

  9. MySQL Execution Plan--NOT EXISTS子查询优化

    在很多业务场景中,会使用NOT EXISTS语句来确保返回数据不存在于特定集合,部分场景下NOT EXISTS语句性能较差,网上甚至存在谣言"NOT EXISTS无法走索引". 首 ...

  10. redis性能提升之pipeline

    1.以前正常使用过程 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命令并将响应发送回客户端. 也就是每个命令都会有一来以往的过程 2.管道的意义 如果能将连续 ...