Django框架自定义session处理操作示例


Posted in Python onMay 27, 2019

本文实例讲述了Django框架自定义session处理操作。分享给大家供大家参考,具体如下:

django有自己的一套session框架,有他自己的机制处理,但这通常是在全新构件系统的时候才会用到。如果是一套已有的系统,现在重新想用django做成web版的,由于以往的数据库是已经设计好,不能修改其表结构,但可以增加表,因为用django必须有django自己的一些系统表,这些是必须添加到原有的数据库中的,我们可以通过 mange.py syncdb 来创建.

| auth_group
| auth_group_permissions
| auth_permission
| auth_user
| auth_user_groups
| auth_user_user_permissions
| blog_content
| django_content_type
| django_session
| django_site

当然,这些表各自有自己的作用,比如django_session 就是用来管理session 的。

如果你用djiango自身的session来管理用户是否登录,可以用系统自带的装饰方法:@login_required

但如果是你自己在原来的系统上开发,原来的用户管理肯定不可能是django一样的。所以得自己写一个类似@login_required方法来判断用户是否已经登录.

假设有一个user model 是用户的Class ,并在 models中已经定义

class UserID(models.Model):
  login_id=models.CharField(max_length=32)
  login_pwd=models.CharField(max_length=32,blank=False)
  nickname=models.CharField(max_length=50)

登录的方法

def checklogin(request):
  """ 用户登录简易判断 """
  try:
    login_id=request.POST.get('user','')
    userpwd=request.POST.get('password','')
    existuser=models.UserID.objects.get(login_id=login_id,login_pwd=userpwd)
    #假设存在此用户,就要给session 赋值
    request.session['myuser']=existuser
  except:
    .....

到此为止,自己定义的登录过程已经完成,并且记录了session值。如果在其他方法需要检查用户是否登录时,如何写自己的判断方法呢?

def check_session(func):
  ''' check user session '''
  def wrapper(request,*args, **kv):
    userinfo=request.session.get('myuser',None)
    if not userinfo:
      return HttpResponseRedirect('/login') #没有登录,则跳转到登录页面
    return func(request,*args, **kv)
  return wrapper

在其他需要检查用户是否登录的views方法上,加上这个装饰就可以了。

@check_session
def get_all_infomation(request):
  context={}
  context.update(csrf(request))
  ......
  return render_to_response('customer/all_information.html',context)

这样,如果用户没有登录的话,就会跳转到登录页面,用装饰实现了自己的用户 session判断。

当然有人会问,我要注销登录怎么处理呢?简单,django的session其实就是dict.所以可以用如下方法注销

def logout(request):
  try:
    del request.session['myuser']
  except KeyError:
    pass
  return HttpResponseRedirect('/')

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
Python XML RPC服务器端和客户端实例
Nov 22 Python
Python封装shell命令实例分析
May 05 Python
Python中pip安装非PyPI官网第三方库的方法
Jun 02 Python
Python解惑之整数比较详解
Apr 24 Python
python 实现上传图片并预览的3种方法(推荐)
Jul 14 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
使用python判断你是青少年还是老年人
Nov 29 Python
解决Python运行文件出现out of memory框的问题
Dec 03 Python
python Elasticsearch索引建立和数据的上传详解
Aug 04 Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 Python
Python中的上下文管理器相关知识详解
Sep 19 Python
90行Python代码开发个人云盘应用
Apr 20 Python
numpy concatenate数组拼接方法示例介绍
May 27 #Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
May 27 #Python
python安装numpy和pandas的方法步骤
May 27 #Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
May 27 #Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 #Python
Python3.7 新特性之dataclass装饰器
May 27 #Python
Python3多目标赋值及共享引用注意事项
May 27 #Python
You might like
社区(php&&mysql)四
2006/10/09 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
Vue2.0父子组件传递函数的教程详解
2017/10/16 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
浅析vue.js数组的变异方法
2018/06/30 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
Vue.js的复用组件开发流程完整记录
2018/11/29 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
2020/04/04 jQuery
Vue的props父传子的示例代码
2020/05/20 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
Python Django框架实现应用添加logging日志操作示例
2019/05/17 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
python 画函数曲线示例
2019/12/04 Python
python序列化与数据持久化实例详解
2019/12/20 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
运动会稿件50字
2014/02/17 职场文书
新年晚会主持词
2014/03/24 职场文书
给小学生的新年寄语
2014/04/04 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
法定授权委托证明书
2014/09/27 职场文书
乒乓球比赛通知
2015/04/27 职场文书
学生通报表扬范文
2015/05/04 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript