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 正则式 概述及常用字符
May 07 Python
Python构建XML树结构的方法示例
Jun 30 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
python2与python3的print及字符串格式化小结
Nov 30 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
python使用百度文字识别功能方法详解
Jul 23 Python
Python Web框架之Django框架cookie和session用法分析
Aug 16 Python
python带参数打包exe及调用方式
Dec 21 Python
浅谈pytorch torch.backends.cudnn设置作用
Feb 20 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
May 10 Python
python实现邮件循环自动发件功能
Sep 11 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 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入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
DOM_window对象属性之--clipboardData对象操作代码
2011/02/03 Javascript
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
JavaScript 布尔操作符解析  && || !
2012/08/10 Javascript
详解AngularJS验证、过滤器、指令
2017/01/04 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
2017/02/22 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
[46:03]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python网络编程学习笔记(三):socket网络服务器
2014/06/09 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
Python装饰器用法示例小结
2018/02/11 Python
Python实现Linux监控的方法
2019/05/16 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
python开头的coding设置方法
2019/08/08 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
Python通过Pillow实现图片对比
2020/04/29 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
怎样在程序里获得一个空指针
2015/01/24 面试题
办公室人员先进事迹
2014/01/27 职场文书
搞笑老公保证书
2015/02/26 职场文书
Python绘制分类图的方法
2021/04/20 Python
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技