使用beaker让Facebook的Bottle框架支持session功能


Posted in Python onApril 23, 2015

bottle是一个小型web框架,很小只有一个文件,但功能确很强大,学起来也简单,简单和小巧的同时也有很多不足,某些功能支持还不是很完善,比如session.但是也有它自身的好处,我们可以自己或使用别的模块来扩展它,不像django,很强大,但是想要进一步扩展的时候确无从下手.我们可以把非常简单而强大的bottle自己动手将它变得更加强大和完善.

bottle小巧支持cookie但是不支持session.为了安全起见我们有时候希望使用的session.我们可以使用中间件beaker来扩展bottle,使我们的bottle应用支持session.废话不多说.首先beaker不是内置模块,我们首先来安装它.当然你可以网上下包手动安装,我们使用最简单的:

easy_install beaker

没有easy_install这个命令?google吧,装了之后还是没有,如过时win的话检查环境变量,将Python安装目录下的Scripts目录添加到环境变量.

安装好后我们如何使用它,下面一段带面是使用的:

#!/usr/bin/env python
from bottle import route, default_app, run, request
from beaker.middleware import SessionMiddleware

session_opts = {
        'session.type':'file',
        'session.cookei_expires':300,
        'session.data_dir':'./sessions',
        'sessioni.auto':True
        }

@route('/test')
def test():
  s = request.environ.get('beaker.session')
  s['test'] = s.get('test', 0) + 1
  s.save()
  return 'Test conter: %d' % s['test']

app = default_app()
app = SessionMiddleware(app, session_opts)
run(app=app)

运行这段代码,会提示:

Bottle server starting up (using WSGIRefServer())...
Listening on http://127.0.0.1:8080/
Hit Ctrl-C to quit.

现在打开浏览器访问http://127.0.0.1:8080/test

不断刷新就会发现数值不断在增大.说明我们的session已经正常工作了

Python 相关文章推荐
python显示生日是星期几的方法
May 27 Python
Python 中Pickle库的使用详解
Feb 24 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
Python面向对象基础入门之设置对象属性
Dec 11 Python
Python 从列表中取值和取索引的方法
Dec 25 Python
在cmd中查看python的安装路径方法
Jul 03 Python
python移位运算的实现
Jul 15 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
django实现后台显示媒体文件
Apr 07 Python
PageFactory设计模式基于python实现
Apr 14 Python
jupyter实现重新加载模块
Apr 16 Python
python中reload重载实例用法
Dec 15 Python
用Python编写脚本使IE实现代理上网的教程
Apr 23 #Python
在Python的Bottle框架中使用微信API的示例
Apr 23 #Python
最基础的Python的socket编程入门教程
Apr 23 #Python
利用Python实现简单的相似图片搜索的教程
Apr 23 #Python
以911新闻为例演示Python实现数据可视化的教程
Apr 23 #Python
Python中优化NumPy包使用性能的教程
Apr 23 #Python
python通过自定义isnumber函数判断字符串是否为数字的方法
Apr 23 #Python
You might like
php开发环境配置记录
2011/01/14 PHP
使用PHP静态变量当缓存的方法
2013/11/13 PHP
ThinkPHP控制器详解
2015/07/27 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
简述Angular 5 快速入门
2017/11/04 Javascript
详细分析JS函数去抖和节流
2017/12/05 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
微信小程序 wxParse插件显示视频问题
2019/09/27 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
python中文乱码的解决方法
2013/11/04 Python
记录Django开发心得
2014/07/16 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
三星俄罗斯授权在线商店:Samsung俄罗斯
2019/09/28 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
大门门卫岗位职责
2013/11/30 职场文书
广告创意求职信
2014/03/17 职场文书
会计求职信怎么写
2015/03/20 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书
Spring中的@Transactional的工作原理
2022/06/05 Java/Android