django开发项目实例3--用session是实现简单的登陆、验证登陆和注销功能
如果你的网页不是纯阅读型的,那么你很有可能希望在用户打开某些界面的时候需要验证用户是否登陆的信息,
虽然django里面有自带的一些user的类,但我看不懂,并且自己实现也不是很难,下面和大家分享一下我的项目经历吧
1:首先你要知道,登陆,验证登陆和注销是怎么样的概念,按照我的理解,我觉得:
登陆:后台验证这个用户名和密码是否存在
保持登陆状态:为什么登陆一次后第二次打开网页的时候不需要验证了呢,那是因为把登陆写入了本地的cookie(我们这里用session),
打开网页的时候先验证本地的session,如果存在有效项,证明已经登陆过
注销:如果明白了保持登陆状态是怎么回事,那么注销无非就是把本地的session项删除就ok了
2:明白原理后,马上来操练代码吧:
- 先写html
<form action="" method="post" name="login_form" id="login_form">
{% csrf_token %}<!--django 必须加的-->
<div id="login_div"> <input id="username" type="text" value="root" name="username"> <input id="password" type="password" name="password" > <input id="submit" type="submit" name="login" value="登陆"> <input id="submit" type="submit" name="logout" value="注销"> </div>
</form>
- 登陆:好吧,默认用户名是root,可以用placeholder属性实现,可以随便改的,密码123456,首先我们要清楚整个流程
用户点开当前页面,验证是否已经登录-->否-->显示登陆框
-->是-->验证用户名和密码-->正确
-->错误-->显示error和登陆框
注销:(其实可以先验证是否登陆先的,再次简化,可以自己考虑去实现)直接把session内容改为false和空就好了
bool_login = False
msg='Please log in first'
if request.session.get('login',False):
username = request.session['username']
bool_login=True
else:
username =''
if request.method=='POST':
if 'login' in request.POST:
#if username =='root'
if (request.POST['username']=='root') and (request.POST['password']==''):
msg='Welcome, You have logged in'
request.session['username']='root'
#let login as true
request.session['login']=True
bool_login = True
else:
msg='username or password error'
bool_login = False
return render_to_response('home.html',{'bool_login':bool_login,'user':request.POST['username'],'msg':msg},context_instance=RequestContext(request))
elif 'logout' in request.POST:
request.session['login'] = False
request.session['username'] = ''
bool_login=False
msg='You have logged out'
return render_to_response('home.html',{'bool_login':bool_login,'msg':msg},context_instance=RequestContext(request))
return render_to_response('home.html',{'bool_login':bool_login,'msg':msg},context_instance=RequestContext(request))





至此就实现了登陆,验证登陆和注销的的全过程了,有什么问题直接评论吧
django开发项目实例3--用session是实现简单的登陆、验证登陆和注销功能的更多相关文章
- django开发项目实例2--如何链接图片和css文件(静态文件)
在上一篇随笔里面,我们已经介绍了如何从零开始用django建立一个项目并且初步运行以来了, 现在我们就要开始写我们的html了,也就是django里面的模板了,不过这节我们只讲如何链接图片和css(静 ...
- django开发项目实例1--建立一个项目并初步运行
1:进入目标目录新建一个项目 D:\>django-admin.py startproject qiweijie 新建完成后,进入项目文件夹查看目录 D:\>cd qiweijie D:\ ...
- Django组件 之 ookie 和 session
-----------------------------------------------------------------------------------------相信自己,水滴石穿,不 ...
- Django开发笔记六
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...
- Django中的Cookie和Session操作以及CBV
1.Cookie 平常我们在浏览网页的时候,在需要输入密码的地方,如果已经登陆了一次,并且时间间隔比较近的话,是不需要登陆的,为什么了?这就是Cookie的作用. Cookie(或Cookies)指某 ...
- Django开发简单采集用户浏览器信息的小功能
Django开发简单采集用户浏览器信息的小功能 Centos环境准备 yum install –y python-pip export http_proxy=http://10.11.0.148:80 ...
- django开发环境搭建(参考流程)
django开发环境搭建(参考流程) 2013-08-08 01:09:06 分类: LINUX 原文地址:django开发环境搭建(参考流程) 作者:bailiangcn 对于一个初学者,在实际的开 ...
- 使用django开发博客过程记录3——博客侧栏实现
说起这个侧栏真是苦恼我很长时间,一开始以为和之前的一样传递额外参数就可以了就像下面这样: class IndexView(ListView): template_name = 'apps/index. ...
- django开发个人简易Blog——数据模型
提到数据模型,一定要说一下MVC,MVC框架是现代web开发中最流行的开发框架,它将数据与业务逻辑分开,减小了应用之间的高度耦合.个人非常喜欢MVC开发框架,除了具有上述特性,它使得web开发变得非常 ...
随机推荐
- LOJ6342::跳一跳——题解
https://loj.ac/problem/6342 f[i]表示从i开始跳的期望时间,f[n]=0. 所以f[i]=(f[i]+f[i+1]+……+f[n])/(n-i+1)+1. 移项整理可求f ...
- 洛谷 P1966 火柴排队 解题报告
P1966 火柴排队 题目描述 涵涵有两盒火柴,每盒装有 \(n\) 根火柴,每根火柴都有一个高度. 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: \(\s ...
- JavaScript去除数组中的重复值
用原型函数(prototype)可以定义一些很方便的自定义函数,实现各种自定义功能. Javascript 中的原型函数(prototype)的工作原理,在 javascript 中每次声明新函数的过 ...
- Linux上读取文件
Linux上读取文件的方法: #!/bin/bash # This is a script for test exec CONFIG_FILE=$ #该脚本传一个文件名为参数 FILE_NO= ech ...
- 禁用 nouveau 驱动
安装Nvidia显卡的官方驱动和系统自带的nouveau驱动冲突. 安装网上方法尝试了modprob.d/blacklist.conf里的各种修改,重启以后还是没有成功警用nouveau驱动 最后看见 ...
- ACE反应器(Reactor)模式(1)
转载于:http://www.cnblogs.com/TianFang/archive/2006/12/13/591332.html 1.ACE反应器框架简介 反应器(Reactor):用于事件多路分 ...
- python练习:抓取统计log内ip数量
#!/usr/bin/python #-*- coding: utf- -*- import os import re rawfile = '/var/log/auth.log' def rawpar ...
- (转)Django发送html邮件
本文转自http://blog.csdn.net/yima1006/article/details/8991145 send_mail(subject, message, from_email, re ...
- 【设计模式】 模式PK:门面模式VS中介者模式
1.概述 门面模式为复杂的子系统提供一个统一的访问界面,它定义的是一个高层接口,该接口使得子系统更加容易使用,避免外部模块深入到子系统内部而产生与子系统内部细节耦合的问题.中介者模式使用一个中介对象来 ...
- Proxmap Sort
这个排序是桶排序和基数排序的改进,理解了前两者,这个排序很容易理解 先回忆下桶排序是怎么回事,它与桶的区别在于入桶规则,桶排序里是1入1号桶,2入2号桶 这个排序把数字分区了,然后给出一个所谓的键,例 ...