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开发变得非常 ...
随机推荐
- BZOJ5157 & 洛谷3970:[TJOI2014]上升子序列——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5157 https://www.luogu.org/problemnew/show/P3970 给定 ...
- BZOJ3339:Rmq Problem & BZOJ3585 & 洛谷4137:mex——题解
前者:https://www.lydsy.com/JudgeOnline/problem.php?id=3339 后者: https://www.lydsy.com/JudgeOnline/probl ...
- BZOJ3195:[JXOI2012]奇怪的道路——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=3195 Description 小宇从历史书上了解到一个古老的文明.这个文明在各个方面高度发达,交通方 ...
- Hive架构及应用介绍【链接】
原文链接:https://blog.csdn.net/a2011480169/article/details/51482799
- 关于string::size_type
size_type其实是string模板类定义的一种类型之一,它与size_of的用法相似,只是它根据存储的类型返回字符串的长度.对于 string具体化,将根据char返回字符串的长度,在这种情况下 ...
- NYOJ 737DP
石子合并(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的 ...
- Spark Streaming 的一些问题
Spark Streaming 的一些问题,做选型前关注这些问题可以有效的降低使用风险. checkpoint checkpoint 是个很好的恢复机制.但是方案比较粗暴,直接通过序列化的机制写入到文 ...
- java 课后作业
杨辉三角 组合数 public class YH { public static void main(String agrs[]) { int a[5][5],i,j; for(i = 0;i < ...
- c# string 转 GUID
提供两种方法 1.try...catch... /* * string TO guid */ private static bool ToGuid(string str) { Guid gv = ne ...
- Android SearchView结合Filter实现列表检索功能使用总结
下面贴出主要代码: <span style="font-size:14px;"> public class MainActivity ex ...