django 快速实现session的操作

简介:

说明:

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

 

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

 

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

项目目录:

 

 

 

设置URL                                                          

 

设置urls.py 文件如下:

复制代码
from django.conf.urls import patterns, include, url
from 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-8
from django.shortcuts import render
from django.shortcuts import render,render_to_response
from django.http import HttpResponse,HttpResponseRedirect
from django import forms


class 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

<form method = 'post'>
    {{uf.as_p}}
    <input type="submit" value = "ok"/>
</form>

 

index.html

<div>
   <h1>welcome {{username}}</h1>
   <a href="/logout">logout</a>
</div>

 

 

访问登录

 

http://127.0.0.1:8000/login/

 

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

 

 

查看浏览器session id

 

 

 

查看数据库

 

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

 

 登录成功:

点击logout退出:

再次访问index页

 

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

 

问题:

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

目录
相关文章
|
7月前
|
关系型数据库 MySQL 数据库连接
使用Django框架完成用户的增删改查操作
使用Django框架完成用户的增删改查操作
101 1
|
SQL 关系型数据库 MySQL
Django入门ORM(Django操作MySQL) 专题一
Django入门ORM(Django操作MySQL) 专题一
|
4月前
|
存储 缓存 中间件
Django 框架中 Session 的用法
【8月更文挑战第30天】
40 6
|
4月前
|
缓存 数据库 数据安全/隐私保护
Django入门到放弃之session
Django入门到放弃之session
|
5月前
|
存储 JavaScript 前端开发
Django + Vue 实现图片上传功能的全流程配置与详细操作指南
 在现代Web应用中,图片上传是一个常见且重要的功能。Django作为强大的Python Web框架,结合Vue.js这样的现代前端框架,能够高效地实现这一功能。本文将详细介绍如何在Django项目中配置图片上传的后端处理,并在Vue前端实现图片的选择、预览和上传功能。
|
5月前
|
SQL 数据库 Python
Django框架数据库ORM查询操作(6)
【7月更文挑战第6天】```markdown Django ORM常用数据库操作:1) 查询所有数据2) 根据ID查询 3) 精确查询 4) 分页排序
82 1
|
6月前
|
关系型数据库 MySQL 数据库
『Django』模型入门教程-操作MySQL
一个后台如果没有数据库可以说废了一半。日常开发中大多数时候都在与数据库打交道。Django 为我们提供了一种更简单的操作数据库的方式。 在 Django 中,模型(Model)是用来定义数据库结构的类。每个模型类通常对应数据库中的一个表,类的属性对应表中的列。通过定义模型,Django 的 ORM(Object-Relational Mapping)可以将 Python 对象映射到数据库表,并提供一套 API 来进行数据库操作。 本文介绍模型的用法。
|
6月前
|
存储 安全 网络协议
Django路由与会话深度探索:静态、动态路由分发,以及Cookie与Session的奥秘
Django路由与会话深度探索:静态、动态路由分发,以及Cookie与Session的奥秘
|
6月前
|
数据库 开发者 Python
Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作
Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作
|
6月前
|
中间件 数据库 Python
Django——会话.Cookie&Session
Django——会话.Cookie&Session