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 除法小技巧
Sep 06 Python
Python列表计数及插入实例
Dec 17 Python
Python操作MySQL简单实现方法
Jan 26 Python
Python sys.argv用法实例
May 28 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
Dec 20 Python
Python PyQt4实现QQ抽屉效果
Apr 20 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
Jun 11 Python
python3 爬取图片的实例代码
Nov 06 Python
使用python socket分发大文件的实现方法
Jul 08 Python
python3通过udp实现组播数据的发送和接收操作
May 05 Python
Python基础之操作MySQL数据库
May 06 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
分享常见的几种页面静态化的方法
2015/01/08 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
PHP实现的QQ空间g_tk加密算法
2015/07/09 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
学习面向对象之面向对象的术语
2010/11/30 Javascript
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
读JavaScript DOM编程艺术笔记
2011/11/15 Javascript
extjs tabpanel限制选项卡数量实现思路及代码
2013/04/02 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
JS实现选项卡实例详解
2015/11/17 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
2019/04/09 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
NestJs使用Mongoose对MongoDB操作的方法
2021/02/22 Javascript
Python绘制七段数码管实例代码
2017/12/20 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
Python数据可视化实现漏斗图过程图解
2020/07/20 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
如何利用Python写个坦克大战
2020/11/18 Python
python装饰器代码深入讲解
2021/03/01 Python
酒店工作职员求职简历的自我评价
2013/10/23 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
中考标语大全
2014/06/05 职场文书
舞蹈专业求职信
2014/06/13 职场文书
航班延误投诉信
2015/07/02 职场文书
利用Apache Common将java对象池化的问题
2022/06/16 Servers