Django的用户认证
Django中用户登陆的实例:
逻辑流程
- 1、客户端发起请求,根据url规则会首先转至index函数,
- 2、在index函数上添加一个装饰器('@login_required',django自带)。加入该装饰器后,请求index函数时,django会跳转至 'accounts/login/' 。
- 3、在urls.py中设置将对 'accounts/login/' 的请求交给user_login函数处理。
- 4、user_login函数里定义验证条件,验证通过,返回首页。验证失败,返回登陆页面,并提示错误。
- 5、点击退出按钮,跳转至登陆页面
index.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Students CRM</h1>
{% block page-content %}
Welcome to The Students CRM
{% endblock %}
<div>
{% if request.user.is_authenticated %} #如果登陆成功
<span>{{ request.user }}</span> #显示登陆名
{% else %}
<span>登陆/注册</span>
{% endif %}
</div>
<div>
<a href="accounts/logout">退出</a>
</div>
</body>
</html>
login.html
{% extends 'index.html' %}
{% block page-content %}
<form action="" method="post"> {% csrf_token %}
<div>
<input type="text" name="username">
</div>
<div>
<input type="password" name="password">
</div>
<div>
<input type="submit" value="login">
</div>
</form>
<div>
{% if login_error %}
<p style="color: red">{{ login_error }}</p>
{% endif %}
</div>
{% endblock %}
views.py
#!_*_ coding:utf-8 _*_
from django.shortcuts import render,HttpResponseRedirect
from django.shortcuts import HttpResponse
# Create your views here. #调用django装饰器
from django.contrib.auth.decorators import login_required from django.contrib.auth import authenticate,login,logout @login_required #装饰器,
def index(request):
return render(request,'index.html') def user_login(request): #判断用户登陆
if request.method=='POST':
user = authenticate(username=request.POST.get('username'),password=request.POST.get('password'))
if user is not None: #user不为空,表示登陆成功
login(request,user)
return HttpResponseRedirect('/') #登陆成功,跳转到首页
else:
login_error='wrong username or password'
return render(request,'login.html',{'login_error':login_error}) #登陆失败,返回错误信息
return render(request,'login.html') def user_logout(request): #退出登陆
logout(request)
return HttpResponseRedirect('/')
urls.py
from django.conf.urls import url
from django.contrib import admin from stu_crm import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$',views.index),
url(r'^accounts/login/',views.user_login),
url(r'^accounts/logout/',views.user_logout),
]
Django的用户认证的更多相关文章
- python 全栈开发,Day79(Django的用户认证组件,分页器)
一.Django的用户认证组件 用户认证 auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户 ...
- 深入一下Django的用户认证和cache
深入一下Django的用户认证和cache 用户认证 首先明白一个概念,http协议是无状态的,也就是每一次交互都是独立的,那如何让服务器和客户端进行有状态的交互呢,现在较为常见的方法就是让客户端在发 ...
- COOKIE与SESSION、Django的用户认证、From表单
一.COOKIE 与 SESSION 1.简介 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. ...
- Django--分页器(paginator)、Django的用户认证、Django的FORM表单
分页器(paginator) >>> from django.core.paginator import Paginator >>> objects = ['joh ...
- Django自定义用户认证
自定义一个用户认证 详细参考官方文档: https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#django.contrib.au ...
- 【django之用户认证】
一.auth模块 模块导入 from django.contrib import auth 主要方法如下: 1 .authenticate() 提供了用户认证,即验证用户名以及密码是否正确,一般 ...
- CMDB资产管理系统开发【day25】:Django 自定义用户认证
官方文档:https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#substituting-a-custom-user-mode ...
- django - 总结 - 用户认证组件
用户认证组件 from django.contrib import auth 从auth_user表中获取对象,没有返回None,其中密码为密文,使用了加密算法 user = auth.authent ...
- Django组件-用户认证
用户认证 一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1.1 .authenti ...
- Django之用户认证组件
auth模块 之前我们在进行用户登录验证的时候,都是自己写代码,接收用户提交的数据,然后去数据库取数据进行匹配验证,其实Django已经给我们提供了内置的用户认证功能.不信的话你可以打开models. ...
随机推荐
- 用ES6语法和方式写gulp
安装依赖模块 npm i -g gulp npm i gulp babel-core babel-preset-es2015 --save-dev 在创建文件 .babelrc(文件名) : (文件内 ...
- 8个不可不知的Mac OS X专用命令行工具【转】
OS X的终端下通用很多Unix的工具和脚本.如果从Linux迁移到OS X会发现很多熟悉的命令和脚本工具,其实并没有任何区别. 但是OS X也提供了很多其他系统所没有的特别的命令行工具.我们推荐8个 ...
- 在vmware workstation10上安装ubuntu14.04,出现以下问题
VMware提示:已将该虚拟机配置为使用 64 位客户机操作系统.但是,无法执行 64 位操作. (1)设置bois 对于HP电脑来说,刚开机时,按住F10,会出现以下界面: 然后回车进行设置: 重启 ...
- PHP引用操作以及外部操作函数的局部静态变量的方法
通过引用方式在外部操作函数或成员方法内部的静态变量 下面举个简单的例子,说明三个关于引用方面的问题: 1. 参数引用后函数内进行类型转换同样是地址操作 2. 参数引用后再传递给其他函数时需要再次添加引 ...
- 2017中国数据库技术大会(DTCC)又要来啦!期待~~
2017第八届中国数据库技术大会(DTCC2017)将于2017年5月11-13日如约而至.2017中国数据库技术大会(DTCC)以"数据驱动•价值发现"为主题,汇集来自互联网.电 ...
- Hbase压力测试
PerformanceEvaluation是HBase自带的性能测试工具,该工具提供了顺序读写.随机读写.扫描等性能测试功能.本文简要介绍HBase PerformanceEvaluation的使用方 ...
- jsp/servlet中的编码问题
首先声明以下只是我个人的看法,有部分观点与网上人云亦云的观点不一样,不过凡事必恭亲,我还是相信自己测试的结果 推荐一个很好地URL编码详解http://www.ruanyifeng.com/blog/ ...
- jquery获取radio的值
Html代码是 <label><input type="radio" name="proofing" value="1"& ...
- 如何在 Linux 中找出最近或今天被修改的文件
1. 使用 ls 命令,只列出你的 home 文件夹中今天的文件. ls -al --time-style=+%D | grep `date +%D` 其中: -a- 列出所有文件,包括隐藏文件 -l ...
- Python笔记4-20151029
一.切片 L = [''Michael','Sarah','Tracy','Bob','Jack'] 取前N个元素,也就是索引为0-(N-1)的元素,可以用循环: >>> r = [ ...