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使用py2exe打包程序介绍
Nov 20 Python
Python中decorator使用实例
Apr 14 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
kaggle+mnist实现手写字体识别
Jul 26 Python
python+splinter实现12306网站刷票并自动购票流程
Sep 25 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
python打造爬虫代理池过程解析
Aug 15 Python
Python实现名片管理系统
Feb 14 Python
Python实现UDP程序通信过程图解
May 15 Python
Python新手学习装饰器
Jun 04 Python
详解python polyscope库的安装和例程
Nov 13 Python
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
Apr 03 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之第八天
2006/10/09 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
2019/02/28 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
php DES加密算法实例分析
2019/09/18 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
2019/09/19 PHP
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
AngularJs ng-route路由详解及实例代码
2016/09/14 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
2019/01/18 jQuery
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
使用pandas读取文件的实现
2019/07/31 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
酒店员工辞职信范文
2015/02/28 职场文书
关于五一放假的通知
2015/08/18 职场文书
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python