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. HMM 前向后向算法(转)

    最近研究NLP颇感兴趣,但由于比较懒,所以只好找来网上别人的比较好的博客,备份一下,也方便自己以后方便查找(其实,一般是不会再回过头来看的,嘿嘿 -_-!!) 代码自己重新写了一遍,所以就不把原文代码 ...

  2. 安卓---android:versionCode和android:versionName 用途

    主要用于升级和自我识别,转自:http://blog.csdn.net/wh_19910525/article/details/8660416 Android的版本可以在androidmainfest ...

  3. android log4j日志管理的使用

    以下为log4j1的日志管理,在android 6.0 一下能正常使用,时候更加高级的胃log4j2,持续跟新 android中的log4j日志文件使用需要两个包,我们不需要进行配置文件的配置,一切都 ...

  4. 简单工厂设计模式(Simple Factory Design Pattern)

    [引言]最近在Youtub上面看到一个讲解.net设计模式的视频,其中作者的一个理解让我印象很深刻:所谓的设计模式其实就是运用面向对象编程的思想来解决平时代码中的紧耦合,低扩展的问题.另外一点比较有见 ...

  5. ZendStudio9之SVN项目代码提示丢失解决

    前几天转移服务器,SVN 也重建了个,但用着重建的项目发现代码提示丢失了...好郁闷..搞了半天终于找到解决的方法了! 如果你还保留有以前的 SVN 项目本地完整备份,可以直接拷贝以下三个文件到新项目 ...

  6. Fiddler的安装设置

    一.安装设置Fiddler2  下载完成后安装,安装完成后打开 如下图设置Fiddler 代理: 二.设置手机代理 快捷键win+r打开运行窗口à输入:cmdà确定 在界面上输入:ipconfig,查 ...

  7. kuangbin专题一 简单搜索

    弱菜做了好久23333333........ 传送门: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=105278#overview A ...

  8. moodle笔记之-权限api

    <?php//权限定义$capabilities = array( 'mod/mytest:managefiles' => array(//具体的权限:插件类型/插件名/权限 这里是增加一 ...

  9. spring security:ajax请求的session超时处理

    当前端在用ajax请求时,如果没有设置session超时时间并且做跳转到登录界面的处理,那么只是靠后台是很难完成超时的一系列动作的:但是如果后台 没有封装一个ajax请求公共类,那么在ajax请求上下 ...

  10. jQuery的animate在火狐浏览器上不支持backgroundPositionX的解决方法

    在网上找的ffSupp.js文件 /** * 自定义backgroundPosition的animate,支持火狐,jQuery1.8以上版本 * @author Meleong * v1.00 */ ...