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 相关文章推荐
通过mod_python配置运行在Apache上的Django框架
Jul 22 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 Python
Python 获得命令行参数的方法(推荐)
Jan 24 Python
python查看模块,对象的函数方法
Oct 16 Python
python os模块简单应用示例
May 23 Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 Python
python实现文字版扫雷
Apr 24 Python
PyTorch 导数应用的使用教程
Aug 31 Python
python实现数学模型(插值、拟合和微分方程)
Nov 13 Python
python3中数组逆序输出方法
Dec 01 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
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
浅谈discuz密码加密的方式
2014/05/22 PHP
php验证码生成代码
2015/11/11 PHP
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
isArray()函数(JavaScript中对象类型判断的几种方法)
2009/11/26 Javascript
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
Python多进程fork()函数详解
2019/02/22 Python
下载官网python并安装的步骤详解
2019/10/12 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
成功的餐厅经营创业计划书
2014/01/15 职场文书
教师求职自荐信
2014/03/09 职场文书
2014最新实习证明模板
2014/10/02 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
投诉信范文
2015/07/02 职场文书
校运会新闻稿
2015/07/17 职场文书
七年级作文之环保作文
2019/10/17 职场文书
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技