Django 自带登录验证:authenticate和login,login_require,logout模块
验证之前需要在settings 中指定验证数据models
AUTH_USER_MODEL = 'crm.UserProfile'#app名字.表名字
1.authenticate是一个方法,验证账号密码是否正确,需要提供username和password2个参数.,验证成功返回一个user对象,失败则返回None:
2.验证完成之后并没有登录,需要用到登录模块,也是一个方法,接受request对象和authenticate返回的user对象.
from django.contrib.auth import login,authenticate,logout
from django.contrib.auth.decorators import login_required def acc_login(req):
error=''
print("-----------",login_required)
if req.method=="GET":
return render(req,"acc_login.html")
else: _email=req.POST.get("acc")
_pwd=req.POST.get("pwd")
user=authenticate(username=_email,password=_pwd)#验证:返回验证对象,失败则是None
if user:
login(req,user)
next_url = req.GET.get("next", '../index')
return redirect(next_url)
else:
error="账号或者密码错误"
return render(req, "acc_login.html",{'error':error})
3.登录成功之后我们一般会做session判断,自己写也可以,Django为我们封装好了login_require模块,直接用:
from django.contrib.auth.decorators import login_required #然后在需要验证的网页前面加上这个装饰器, @login_required
def xxx(req,):... #settings 里面指定login_url,如果没有登录就会套转到该路径 LOGIN_URL="/crm/acc_login" #如果没有登录django跳转到LOGIN_URL,会在GET信息中加上原本地址,方便登录后跳转回原地址.在login 里面合理设置:
def acc_login(req):
error=''
print("-----------",login_required)
if req.method=="GET":
return render(req,"acc_login.html")
else: _email=req.POST.get("acc")
_pwd=req.POST.get("pwd")
user=authenticate(username=_email,password=_pwd)#验证:返回验证对象,失败则是None
if user:
login(req,user)
next_url = req.GET.get("next", '../index')
return redirect(next_url)
else:
error="账号或者密码错误"
return render(req, "acc_login.html",{'error':error})
4.Django 连登出都考虑到了 logout模块,
from django.contrib.auth import login,authenticate,logout #前端设置一个url 直接对应该view,logout()接受request,就会登出
def acc_logout(req):
logout(req)
return redirect("/crm/acc_login")
Django 自带登录验证:authenticate和login,login_require,logout模块的更多相关文章
- django自定义实现登录验证-更新版
django自定义实现登录验证 django内置的登录验证必须让开发者使用django内置的User模块,这会让开发者再某些方面被限制住 下面的模块是我自己自定义实现的django验证,使用方式和dj ...
- django 自带的验证功能
django.contrib.auth提供了很多验证方法 authenticate(): 提供了用户认证,在自带的数据库表中验证用户名和密码,需要username和password两个关键字参数 如果 ...
- 如何使用Django实现用户登录验证
最初开始搞用户登录验证的时候感觉没什么难的,不就是增删改查中的查询数据库么,但是还是遇到许多小问题,而且感觉在查询数据库的时候,要把前端的数据一条一条的进行比对,会导致我的代码很丑,而且方式很不智,所 ...
- django自带登录认证与登录自动跳转
# 导入django自带模块 from django.contrib.auth import authenticate, login, logout # 使用authenticate进行认证,使用lo ...
- Django 中间件版登录验证
中间件版的登录验证需要依靠session,所以数据库中要有django_session表. urls.py # urls.py from django.conf.urls import url fro ...
- 自定义Django中间件(登录验证中间件实例)
前戏 我们在前面的课程中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面.我们通过给几个特定视图函数加装饰器实现了这个需求.但是以后添加的视图函数可能也需要加上装饰 ...
- django自带的登录验证功能
django自带的验证机制 from django.shortcuts import render, redirect from django.contrib.auth import authenti ...
- Django学习笔记(16)——扩展Django自带User模型,实现用户注册与登录
一,项目题目:扩展Django自带User模型,实现用户注册与登录 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册,登录,用户认证,注销,修改密码等功能. ...
- django 使用其自带的验证系统 进行用户名有效性验证 登录状态验证 登入操作 登出操作
from django.shortcuts import render, redirect from django.contrib.auth import authenticate, login, l ...
随机推荐
- ios中[UIScreen mainscreen].bounds 的大小是由什么决定的?
ios中经常会用[UIScreen mainScreen].bounds 来获取屏幕的frame,但最近网上下载了个项目,在模拟器运行起来,打印[UIScreen mainScreen].bounds ...
- mybatis的逆向工程和中文注解
由于MyBatis Generator自带了生成注释的功能,但是,是英文的而且生成的根本无法理解,所以可以通过,修改他的源码来实现生成中文的注释,具体方式有以下几种: 1) 自定义CommentGen ...
- Java 锁的学习
个人学习整理,所有资料均来源于网络,非原创. 死锁的四个必要条件:互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用.请求与保持条件(Hold and wait):已经得 ...
- 20175236 2018-2019-2 《Java程序设计》第五周学习总结
教材学习内容总结 接口回调 1.接口属于引用型变量,可以存放实现该接口类的实例的引用,即存放对象的引用. 2.接口回调理解上跟对象的上转型对象差不多. 理解接口 接口可以抽象出重要的行为标准. 接口多 ...
- [UE4]判断2个向量是否相等
一.因为向量是3个浮点数,如果不使用误差的话,计算机里面的浮点数是有一定误差的. 二.如上图所示,如果2个向量的误差1厘米(UE4的单位是厘米),则表示2个向量相等.
- Docker容器开机自动启动
部署项目服务器时,为了应对停电等情况影响正常web项目的访问,会把Docker容器设置为开机自动启动. 在使用docker run启动容器时,使用--restart参数来设置: # docker r ...
- Struts S2-048 RCE漏洞分析
应该是S2-048目前最详细的一篇了.. 漏洞影响 Struts 2.3.x系列中的Showcase应用 使用了struts1 插件,并在使用ActionMessages时将客户端可控的参数拼接传递给 ...
- Java代码片段——向文件末尾添加内容
BufferedWriter out = null; try { out = new BufferedWriter(new FileWriter(”filename”, true)); out.wri ...
- cucumber soapui test web services
没有UI,所以不需要Selenium. 首先Cucumber: 每个web service形成一个feature文件,描述完成的业务场景. 是否引入参数? 如果引入参数,可能需要根据某种方式保存参数, ...
- golang初识4 - Go 并发
Go的CSP并发模型实现:M, P, G Go实现了两种并发形式.第一种是大家普遍认知的:多线程共享内存.其实就是Java或者C++等语言中的多线程开发.另外一种是Go语言特有的,也是Go语言推荐的: ...