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中的输入和输出功能进行读取和写入的教程
Apr 14 Python
进一步探究Python中的正则表达式
Apr 28 Python
Python3读取zip文件信息的方法
May 22 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
Pandas之ReIndex重新索引的实现
Jun 25 Python
使用python打印十行杨辉三角过程详解
Jul 10 Python
python内存动态分配过程详解
Jul 15 Python
django 使用 PIL 压缩图片的例子
Aug 16 Python
在PyTorch中使用标签平滑正则化的问题
Apr 03 Python
python打开文件的方式有哪些
Jun 29 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
Dec 11 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里8个鲜为人知的安全函数分析
2014/12/09 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
2019/03/28 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
javascript实现淘宝幻灯片广告展示效果
2015/04/27 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
Javascript实现动态时钟效果
2018/11/17 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
利用不到200行代码写一款属于你自己的js类库
2019/07/08 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
python制作企业邮箱的爆破脚本
2016/10/05 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
python实现计算图形面积
2021/02/22 Python
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
实习心得体会
2014/01/02 职场文书
孝老爱亲模范事迹
2014/01/24 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
班主任班级寄语大全
2014/04/04 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
关于环保的宣传稿
2015/07/23 职场文书
MySQL分区表实现按月份归类
2021/11/01 MySQL
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏