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 相关文章推荐
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 Python
Python对list列表结构中的值进行去重的方法总结
May 07 Python
python对excel文档去重及求和的实例
Apr 18 Python
Python实现数据结构线性链表(单链表)算法示例
May 04 Python
flask 实现token机制的示例代码
Nov 07 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 Python
浅析python标准库中的glob
Mar 13 Python
Keras自定义IOU方式
Jun 10 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
Python hashlib和hmac模块使用方法解析
Dec 08 Python
Python截图并保存的具体实例
Jan 14 Python
python计算列表元素与乘积详情
Aug 05 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
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
javascript function、指针及内置对象
2009/02/19 Javascript
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2012/01/21 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
Vue响应式原理详解
2017/04/18 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
基于并发服务器几种实现方法(总结)
2017/12/29 Python
Python3实现飞机大战游戏
2020/04/24 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
CSS伪类与CSS伪元素的区别及由来具体说明
2012/12/07 HTML / CSS
施华洛世奇英国官网:SWAROVSKI英国
2017/03/13 全球购物
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
Linux开机引导的步骤是什么
2015/10/19 面试题
某公司面试题
2012/03/05 面试题
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
大四毕业生学习总结的自我评价
2013/10/31 职场文书
个人求职信范文分享
2013/12/13 职场文书
物流专业大学的自我评价
2014/01/11 职场文书
科级干部考察材料
2014/02/15 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
买卖车协议书
2014/04/21 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/10/28 职场文书
运动会开幕词
2015/01/28 职场文书
交通事故责任认定书
2015/08/06 职场文书
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server