码迷,mamicode.com
首页 > 其他好文 > 详细

bottle框架学习(七)之session的使用

时间:2015-06-21 23:58:59      阅读:558      评论:0      收藏:0      [点我收藏+]

标签:应用程序   web开发   python   request   web框架   

Bottle 自身并没有提供Session的支持,,可以使用beaker中间件或自己实现。Beaker是一个缓存和会话的库,与Web 应用程序和独立的Python 脚本及应用程序一起使用。它是WSGI 的中间件,能够很简单地嵌入,与基于 WSGI Web 应用程序一起使用,并且缓存修饰器对于任何基于 Python 的应用程序都是容易使用的。

beaker文档:http://beaker.readthedocs.org/en/latest/index.html

安装beaker

[root@ju bottle]# pip install beaker

下面直接上代码:

[root@ju bottle]# cat session_test.py 
#!/usr/bin/env python
#coding=utf-8
from bottle importroute,run,template,redirect,request,default_app
from beaker.middleware importSessionMiddleware
 
session_opts = {
   ‘session.type‘:‘file‘,              #以文件的方式保存session
   ‘session.cookei_expires‘:300,       #session过期时间为300秒
   ‘session.data_dir‘:‘/tmp/sessions_dir‘, #session保存目录
   ‘session.auto‘:True               #自动保存session
    }
 
@route(‘/login‘)
def session_func():
   return template(‘login‘)
 
@route(‘/login‘, method=‘POST‘)
def do_login():
   username = request.forms.get(‘username‘)
   password = request.forms.get(‘password‘)
   if username ==‘ju‘ and password == ‘123‘:
#这里为了方便,写死用户名和密码,正常应该到数据库去查询,下一张我们讲解如何操作数据库
       s = request.environ.get(‘beaker.session‘)
#如果用户名和密码都正确,则获取环境变量中的beaker.session对象,然后以字典的方式,往session对象添加用户名,也可以添加其他信息。
       s[‘user‘] = username
       s.save()
           redirect(‘/‘)
   else:
       redirect(‘/login‘)
 
@route(‘/‘)
def index():
   s= request.environ.get(‘beaker.session‘)
   username = s.get(‘user‘)   #这里的user的值,是从do_loging函数保存进来的
   if not username:
       redirect(‘/login‘)
 
   return "登录成功,%s" % username
 
dapp = default_app()
session_app = SessionMiddleware(dapp,session_opts)
run(app=session_app,host=‘0.0.0.0‘,port=8000,debug=True)


在浏览器中输入:http://192.168.116.199:8000/login

技术分享

随便输入一个用户明密码还是这个login页面,输入ju123之后会进入如下页面:

 技术分享


我们查看一下/tmp/sessions_dir这个目录:

[root@ju bottle]# tree /tmp/sessions_dir/
/tmp/sessions/
├──container_file
│   ├── h
│   │   └── hX
│   │       └── hXTaPNCGPNUnDDZi5h1JUih70OM.cache
│   └── j
│       └── jU
│           └── jUqEPiJf6RgFx93G4ECD9qa_meQ.cache
└──container_file_lock
    └── 5
       ├── 59
       │   └──59f3446002b04a9c2e9f49fb3a7b9b154d0d9694.lock
       └── 5b
           └──5b7c1da41560807436212ee66daeaed7c8b8a1fb.lock
 
9 directories, 4 files



本文出自 “乾楠有” 博客,请务必保留此出处http://changfei.blog.51cto.com/4848258/1664005

bottle框架学习(七)之session的使用

标签:应用程序   web开发   python   request   web框架   

原文地址:http://changfei.blog.51cto.com/4848258/1664005

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!