博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django 快速实现session的操作
阅读量:6469 次
发布时间:2019-06-23

本文共 2369 字,大约阅读时间需要 7 分钟。

 

说明:

  从这一篇开始就不再完整的介绍django项目的创建过程了,因为前面几篇博客中都详细的介绍了这个创建过程,套路都是一样的,熟悉了这个套路,后面要做的是一些细节技术点的学习和练习。

 

  上一节讲到了django中如何使用cookie来记录用户登录信息,这一节来了解session是如何来记录用户登录信息的。

 

创建项目,创建应用,设置settings.py的过程不再介绍。

项目目录:

 

 

 

设置URL                                                          

 

设置urls.py 文件如下:

from django.conf.urls import patterns, include, urlfrom django.contrib import admin admin.autodiscover()urlpatterns = patterns('',    # Examples:    # url(r'^$', 'csvt11.views.home', name='home'),    # url(r'^blog/', include('blog.urls')),    url(r'^admin/', include(admin.site.urls)),    url(r'^login/$', 'online.views.login'),    url(r'^index/$', 'online.views.index'),    url(r'^logout/$', 'online.views.logout'),)

 

 

进行数据库的同步                                

 

因为本例中,我们不需要创建数据库表(当然你可以参考前面几章的例子创建用户登录的数据库表),所以,这里直接执行数据库的同步。

 

自动创建了一个叫django_session的表,这个表里就是用于存放我们的session信息的。

 

 

创建视图                                            

 

views.py

#coding=utf-8from django.shortcuts import renderfrom django.shortcuts import render,render_to_responsefrom django.http import HttpResponse,HttpResponseRedirectfrom django import formsclass UserForm(forms.Form):    username = forms.CharField()#用户登录def login(req):    if req.method == "POST":        uf = UserForm(req.POST)        if uf.is_valid():            username = uf.cleaned_data['username']            #把获取表单的用户名传递给session对象            req.session['username'] = username            return HttpResponseRedirect('/index/')    else:        uf = UserForm()    return render_to_response('login.html',{
'uf':uf})#登录之后跳转页def index(req): username = req.session.get('username','anybody') return render_to_response('index.html',{
'username':username})#注销动作def logout(req): del req.session['username'] #删除session return HttpResponse('logout ok!')

  这里用到的就是session创建和删除,代码中有注释。视图是动能实现的核心逻辑,这里调用到了session的相关方法,非常简单,需要说明的是session 是字典的形式存在的,比如一个sessionid 对应一个信息(比如,用户名,密码,添加到购物车的商品等。)

 

 

创建模板                                             

 

login.html

{
{uf.as_p}}

 

index.html

welcome {
{username}}

logout

 

 

访问登录

 

 

这里没有判断用户密码是否正常的逻辑,所以,输入任意信息都可登录。

 

 

查看浏览器session id

 

 

 

查看数据库

 

  看查,session 是用户登录的用户名保存服务器端的数据库中,而客户端(浏览器)产生的只是一个session id ,程序通过读取客户端的session id 来查找对应的用户名,并返回给客户端,从而在客户端的信息。在数据库中并没有看到刚才登录的用户名(Tom),标红色下划线的就是,只是对其进行了加密,所以会看到一串很长的大小写字符串。

 

 登录成功:

点击logout退出:

再次访问index页

 

    在index 页面,点击“logout” 退出后,就删除了客户端的session id 信息,所以,再访问index 页面,就是会看到“weclome anybody”的提示。

 

问题:

  按照正常的逻辑,用户登录是不准访问登录成功的页面(index),这一块就涉及到django 的“访问限制”的相关方法。

 

转载于:https://www.cnblogs.com/fnng/p/3841246.html

你可能感兴趣的文章
服务器常用的状态码及其对应的含义如下
查看>>
zoom和transform:scale的区别
查看>>
幸福框架:可扩展的、动态的、万能的 编号生成器
查看>>
黄聪:PHP 防护XSS,SQL,代码执行,文件包含等多种高危漏洞
查看>>
svn status 显示 ~xx
查看>>
常用HiveQL总结
查看>>
[转]使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(三)-- Logger
查看>>
POJ 3311 Hie with the Pie(状压DP + Floyd)
查看>>
HDU 1402 A * B Problem Plus FFT
查看>>
[CareerCup] 17.3 Factorial Trailing Zeros 求阶乘末尾零的个数
查看>>
Security updates and resources
查看>>
深入理解JavaScript系列(25):设计模式之单例模式
查看>>
DNS为什么通常都会设置为14.114.114.114
查看>>
给定一个序列,判断该序列是否为二叉树查找树的后序遍历序列
查看>>
Sqoop架构(四)
查看>>
golang copy函数
查看>>
《你有多少问题要请示》精华集粹
查看>>
深度 | 机器学习敲门砖:任何人都能看懂的TensorFlow介绍【转】
查看>>
leveldb学习:DBimpl
查看>>
MySQL存储引擎--MYSIAM和INNODB引擎区别
查看>>