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的用户认证的更多相关文章

  1. python 全栈开发,Day79(Django的用户认证组件,分页器)

    一.Django的用户认证组件 用户认证 auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户 ...

  2. 深入一下Django的用户认证和cache

    深入一下Django的用户认证和cache 用户认证 首先明白一个概念,http协议是无状态的,也就是每一次交互都是独立的,那如何让服务器和客户端进行有状态的交互呢,现在较为常见的方法就是让客户端在发 ...

  3. COOKIE与SESSION、Django的用户认证、From表单

    一.COOKIE 与 SESSION 1.简介 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. ...

  4. Django--分页器(paginator)、Django的用户认证、Django的FORM表单

    分页器(paginator) >>> from django.core.paginator import Paginator >>> objects = ['joh ...

  5. Django自定义用户认证

    自定义一个用户认证 详细参考官方文档: https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#django.contrib.au ...

  6. 【django之用户认证】

    一.auth模块 模块导入 from django.contrib import auth 主要方法如下: 1 .authenticate()    提供了用户认证,即验证用户名以及密码是否正确,一般 ...

  7. CMDB资产管理系统开发【day25】:Django 自定义用户认证

    官方文档:https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#substituting-a-custom-user-mode ...

  8. django - 总结 - 用户认证组件

    用户认证组件 from django.contrib import auth 从auth_user表中获取对象,没有返回None,其中密码为密文,使用了加密算法 user = auth.authent ...

  9. Django组件-用户认证

    用户认证 一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1.1 .authenti ...

  10. Django之用户认证组件

    auth模块 之前我们在进行用户登录验证的时候,都是自己写代码,接收用户提交的数据,然后去数据库取数据进行匹配验证,其实Django已经给我们提供了内置的用户认证功能.不信的话你可以打开models. ...

随机推荐

  1. js预览PDF的插件(亲测支持IE9,火狐,等等)

    aspx文件 <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible ...

  2. mysql权限设置

    想要设定权限,必须通过root用户登录: >> grant all privileges on *.* to root@"%" identified by " ...

  3. Tweak 中系统方法写入文件到根目录下面失败

    Tweak 中系统方法写入文件到根目录下面失败 失败原因: Error Domain=NSCocoaErrorDomain Code=513 "The operation couldn’t ...

  4. 开源的许可证GPL、LGPL、BSD、Apache 2.0的通俗解释

    软件开发者要开源软件,不单单是开放源代码就可以了,选择一种许可证很重要,一个许可证之于软件就相当于价值观之于普通人,代表了这个软件的基本品性.一个错误的许可证选择可能会直接导致整个项目的失败. 各种开 ...

  5. Tiny6410之重定位代码到SRAM+4096

    重定位代码 两个不同的地址概念: 对于程序而言,需要理解两个地址,一个是程序当前所处的地址,即程序运行时所处的当前地址.二是程序应该位于的运行地址,即编译程序时所指定的程序的链接地址.在Tiny641 ...

  6. OpenGL杂七杂八

    Projection Matrix 投影矩阵 3D -> 2D PFD_DOUBLEBUFFER 双缓冲 在图形图象处理编程过程中,双缓冲是一种基本的技术.我们知道,如果窗体在响应WM_PAIN ...

  7. [Q]自定义纸张大小

    问:当打印机纸张列表里没有符合要求的纸张大小,例如如何打印加长图?答:当打印非标准图框时,你可能在图纸列表里找不到想要纸幅.你需要自己新建你需要的纸幅,以pdfFactory虚拟打印机为例(其它打印机 ...

  8. mybatis(1)

    一.MyBatis简介 MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索.MyBatis ...

  9. jsp中,对window对象的简单总结

    window的对象有: alert(message) 弹出一个警示对话框confirm(message) 弹出一个确认对话框prompt(message,defaultmessage) 弹出一个提示对 ...

  10. Javascript封装弹出框控件

    1.首先先定义好弹出框的HTML结构 <div class="g-dialog-contianer"> <div class="dialog-windo ...