博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GAE+bottle+jinja2+beaker快速开发demo - Python,GAE - language - ITeye论坛
阅读量:5745 次
发布时间:2019-06-18

本文共 2249 字,大约阅读时间需要 7 分钟。

GAE+bottle+jinja2+beaker快速开发demo - Python,GAE - language - ITeye论坛

    :GAE+bottle+jinja2+beaker快速开发demo
    精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
    作者正文
        heartsong
        等级: 初级会员
        heartsong的博客
        性别:
        文章: 55
        积分: 80
        来自: 杭州
       发表时间:2011-02-25   最后修改:2011-02-25
    < > 猎头职位: 北京: 【北京】游戏公司诚邀php开发工程师
    相关文章: 
        在Google App Engine上用zipimport引入新版的Django
        Python Django GAE开发 环境搭建篇
        混合使用django模板和jinja模板
    推荐群组: Scala圈子
    更多相关推荐
    Python GAE
        相对于Django,bottle可以看成是一个非常精巧的python web framework了,只有一个文件就可以使用了。于是想用这个东西在gae做个简单的demo。
    1. GAE+bottle
    http://pypi.python.org/pypi/bottle
        copy那个bottle.py到gae工程的目录里,现在,可以写一个很简短的代码来测试一下:
    main.py
    from bottle import route, default_app
    from google.appengine.ext.webapp.util import run_wsgi_app
    @route
    def index():
        return 'Hello world!'
    def main():
        '''Remove this when on production '''
        bottle.debug(True)
        app = default_app()   
        run_wsgi_app(app)
    if __name__ == '__main__':
        main()
        同时,要修改app.yaml文件:
    handlers:
    - url: /.*
      script: main.py
        现在,就可以直接运行GAE,查看结果了!就这么简单!
    
    2. GAE+bottle+beaker
        在GAE+bottle的组合中,如果要使用session的话,查询到bottle的原话如下:
    How to implement sessions?
    There is no build in support for sessions because there is no right way to do it. Depending on requirements and environment you could use beaker middleware with a fitting backend or implement it yourself.
         很清楚的告诉我们,如果要使用session的话,可以考虑beaker,从这里下载:
    http://pypi.python.org/pypi/Beaker
         下载下来后,把里面的一个beaker文件夹,copy到GAE工程目录中,会作为一个package来使用。
        在上面的程序修改如下:
    main.py
    from bottle import route, default_app
    from beaker.middleware import SessionMiddleware
    from google.appengine.ext.webapp.util import run_wsgi_app
    @route('/')
    def index():
        session = request.environ['beaker.session']
        if 'refrush_times' in session:
            refrush_times = int(session['refrush_times'])
        else:
            refrush_times = 0
        refrush_times = refrush_times + 1
        session['refrush_times'] = refrush_times
        return 'Hello world! You have refrush this page for %s times.' % str(refrush_times)
    def main():
        '''Remove this when on production '''
        bottle.debug(True)
        app = default_app()
        session_opts = {
                        'session.type': 'ext:google',
                        'session.cookie_expires': True,
                        'session.auto': True,
                        }
        app = SessionMiddleware(app, session_opts)
        run_wsgi_app(app)
    if __name__ == '__main__':
        main()
        注意,session_opts里的session.type,如果在GAE下使用,一定要选ext:google,这个是我测试了几个选项之后才发现的。如果你有更好的方法,也欢迎告诉我,谢谢。
    

转载地址:http://kjxzx.baihongyu.com/

你可能感兴趣的文章
linux查找文件里面的内容
查看>>
seo关键词的定位,选择关键还应该是词
查看>>
5..网站META标签的优化--解析怎么去优化META标签
查看>>
python学习笔记
查看>>
时间戳数字和时间字符串的相互转换
查看>>
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
查看>>
实验:新增硬盘、MBR分区、制作文件系统并挂载使用
查看>>
oracle字符集
查看>>
模拟qsort实现冒泡排序
查看>>
Maven在linux环境下批量清除.lastUpdated文件
查看>>
如何用思维导图提高阅读效率?分享高效阅读思维导图模板及绘制技巧
查看>>
Oracle 调整实例参数减少 I/O请求
查看>>
UI组件-UIDatePicker
查看>>
如何查找JSP页面中的错误
查看>>
Python——signal
查看>>
Python——eventlet.hubs
查看>>
新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序
查看>>
linux 目录
查看>>
Unity3D常用代码之Rigidbody.MovePosition 刚体移动
查看>>
【实习记】2014-08-10(下)用宏来批量声明定义函数
查看>>