验证之前需要在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模块的更多相关文章

  1. django自定义实现登录验证-更新版

    django自定义实现登录验证 django内置的登录验证必须让开发者使用django内置的User模块,这会让开发者再某些方面被限制住 下面的模块是我自己自定义实现的django验证,使用方式和dj ...

  2. django 自带的验证功能

    django.contrib.auth提供了很多验证方法 authenticate(): 提供了用户认证,在自带的数据库表中验证用户名和密码,需要username和password两个关键字参数 如果 ...

  3. 如何使用Django实现用户登录验证

    最初开始搞用户登录验证的时候感觉没什么难的,不就是增删改查中的查询数据库么,但是还是遇到许多小问题,而且感觉在查询数据库的时候,要把前端的数据一条一条的进行比对,会导致我的代码很丑,而且方式很不智,所 ...

  4. django自带登录认证与登录自动跳转

    # 导入django自带模块 from django.contrib.auth import authenticate, login, logout # 使用authenticate进行认证,使用lo ...

  5. Django 中间件版登录验证

    中间件版的登录验证需要依靠session,所以数据库中要有django_session表. urls.py # urls.py from django.conf.urls import url fro ...

  6. 自定义Django中间件(登录验证中间件实例)

    前戏 我们在前面的课程中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面.我们通过给几个特定视图函数加装饰器实现了这个需求.但是以后添加的视图函数可能也需要加上装饰 ...

  7. django自带的登录验证功能

    django自带的验证机制 from django.shortcuts import render, redirect from django.contrib.auth import authenti ...

  8. Django学习笔记(16)——扩展Django自带User模型,实现用户注册与登录

    一,项目题目:扩展Django自带User模型,实现用户注册与登录 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册,登录,用户认证,注销,修改密码等功能. ...

  9. django 使用其自带的验证系统 进行用户名有效性验证 登录状态验证 登入操作 登出操作

    from django.shortcuts import render, redirect from django.contrib.auth import authenticate, login, l ...

随机推荐

  1. Qt控制流简析

    前言: Qt库及其绑定python语言的PySide库.PyQt库在圈中已经是TD的标配了,Qt提供了多种快速绘制图形窗口的方式.但正是因为这个原因,导致很多TD局限在设计窗口外观的桎梏中,而忽略了Q ...

  2. Emoji表情代码大全

    Name   Unified DoCoMo KDDI Softbank Google Wechat   black sun with rays U+2600 U+E63E U+E488 U+E04A ...

  3. python3学习笔记十(循环语句)

    参考http://www.runoob.com/python3/python3-loop.html 循环语句 while循环 # !/usr/bin/env python3 n = 100 sum = ...

  4. ASP.NET Core 1.1版本之Hello word

    1.下载ASP.NET Core 1.1版本,并且安装. 2.新建一个工作文件夹,本文以WebApiFrame名称为例建立一个新的文件夹: mk WebApiFrame 3.启动命令行,在命令行中进入 ...

  5. Mysql 多表数据拼接插入及子查询结果集随机取一条

    最近遇到一个测试数据的需求,需要往一个表中插入4个来源的数据. 往orders 表中插入 来自 sql_person cm_user_car_model cm_sp_product_new 部分固定数 ...

  6. mybatis缓存的设计

    继续用提问的方式来看Mybatis的缓存设计. 1.Mybatis如何开启缓存 Mybatis对查询结果进行缓存,所以缓存的对象为具体的Statement 通过在Statement上是否使用缓存来启用 ...

  7. python版本的简单贪吃蛇

    先看看效果,白色的条是蛇(简单勿怪,有研究的同学请告知做的美观点),做了一个笑脸是糖果,背景弄了一个图, 代码也是从其他人那边弄来的,改了一部分直接可以在window上直接运行 代码如下: #codi ...

  8. {"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}

    ElasticSearch-head 查询报 406错误码 {"error":"Content-Type header [application/x-www-form-u ...

  9. Linux基本指令

    常用目录文件作用 - /    根目录 - /bin    命令保存目录(普通用户就可以读取的命令) - /boot    启动目录,启动相关文件 - /dev    设备文件保存目录 - /etc  ...

  10. sql语句基本查询操作

    表结构 SQL> desc empName Type Nullable Default Comments -------- ------------ -------- ------- ----- ...