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. ...
随机推荐
- Linux学习-文件和目录管理
Linux文件和目录管理 文件系统架构 1.Linux文件系统具有层级性 1)文件或者目录起始于根目录"/"成为树状结构 2)最顶层由/开始 2 ...
- nyoj 592 spiral grid(广搜)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=592 解决以下问题后就方便用广搜解: 1.将数字坐标化,10000坐标为(0,0),这样就 ...
- 命令行启动Hololens Emulator,可解决内存不足的问题
有时候在虚拟机测试时常会出现 内存不足 的情况,导致应用卡顿,调整 /memsize 参数大小: start "HoloLens" "C:\Program Files ( ...
- WPF中自定义绘制内容
先说结论:实现了在自定义大小的窗口中,加载图片,并在图片上绘制一个矩形框:且在窗口大小改变的情况,保持绘制的矩形框与图片的先对位置不变. 在WinForm中,我们可以很方便地绘制自己需要的内容,在WP ...
- 【IE6的疯狂之五】div遮盖select的解决方案
IE6以及一下版本下,选择框Select会覆盖Div中的内容一般情况下,可以将显示的内容放到Iframe中,然后再显示框架内的内容.由于Iframe的可以显示在Select上层,就可以解决这个问题.不 ...
- teyi
$arr=array('haha'=>"苹果");print_r($arr['haha']); $arr=array(0=>"苹果");$arr=a ...
- jQuery中的ajax使用详解
$.ajax({ type : "get", url : "http://www.w3school.com.cn/jquery/ajax_ajax.asp&quo ...
- 动态多条件查询分页以及排序(一)--MVC与Entity Framework版url分页版
一.前言 多条件查询分页以及排序 每个系统里都会有这个的代码 做好这块 可以大大提高开发效率 所以博主分享下自己的6个版本的 多条件查询分页以及排序 二.目前状况 不论是ado.net 还是EF ...
- ubuntu 配置ftp服务器 vsftpd
1. 更新库,否则会可能有库过时不匹配报错. sudo apt-get update 2. 安装vsftpd sudo apt-get install vsftpd 3. 判断vsftpd是否安装成功 ...
- mybatis_generator
1.准备工作: jar包: mybatis-generator-core-1.3.2.jar,MyBatis Generator所需jar mysql-connector-java-5.1.28-bi ...