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 相关文章推荐
pycharm 使用心得(七)一些实用功能介绍
Jun 06 Python
Python深入学习之对象的属性
Aug 31 Python
Python编程之多态用法实例详解
May 19 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
Jul 01 Python
详解python3中socket套接字的编码问题解决
Jul 01 Python
pandas对指定列进行填充的方法
Apr 11 Python
python3.5绘制随机漫步图
Aug 27 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
Jun 10 Python
Python 实现一个手机号码获取妹子名字的功能
Sep 25 Python
python实现文件批量编码转换及注意事项
Oct 14 Python
使用python实现男神女神颜值打分系统(推荐)
Oct 31 Python
python保存图片的四个常用方法
Feb 28 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
浅谈电磁辐射对健康的影响
2021/03/01 无线电
php图像处理类实例
2015/07/28 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
编写高效jQuery代码的4个原则和5个技巧
2014/04/24 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
javascript中闭包(Closure)详解
2016/01/06 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
requireJS使用指南
2016/04/27 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
python3实现全角和半角字符转换的方法示例
2017/09/21 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
2020/01/10 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
世界上最受欢迎的花店:1-800-Flowers.com
2020/06/01 全球购物
庆元旦文艺演出主持词
2014/03/27 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
岗位聘任报告
2015/03/02 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
关于golang高并发的实现与注意事项说明
2021/05/08 Golang
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL