SAE+python+Tornado+pyTenjin 的完整示例

python 简单易懂,Tornado 高效易学,pyTenjin 轻巧快速,SAE 安全稳定使用门槛低。现在把他们结合在一起做了一个可运行在SAE 上的完整示例。

SAE+python+Tornado+pyTenjin 的完整示例

风格和源码跟SAEpy-LOG 相同,还是简单介绍一下。

文件目录结构:

1
2
3
4
5
6
7
8
9
10
11
12
|-- common.py  放一些通用的类、函数
|-- config.yaml SAE配置文件
|-- index.wsgi SAE 访问入口
|-- setting.py 自己应用的一些设置
|-- templates/ 默认模板文件夹
|   |-- admin/ 管理员theme
|   |   `-- home.html
|   `-- guest/ 浏览者theme
|       |-- footer.html
|       `-- home.html
|-- tenjin.py 修改后适合 SAE 的pyTenjin 模板引擎
`-- view.py 视图控制

主要文件源码

common.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# -*- coding: utf-8 -*-

import os.path

import tornado.web

import tenjin
from tenjin.helpers import *

from setting import *

engine = tenjin.Engine(path=[os.path.join('templates', theme) for theme in THEMES] + ['templates'], cache=tenjin.MemoryCacheStorage(), preprocess=True)
class BaseHandler(tornado.web.RequestHandler):
    def render(self, template, context=None, globals=None, layout=False):
        if context is None:
            context = {}
        return engine.render(template, context, globals, layout)
    
    def echo(self, template, context=None, globals=None, layout=False):
        self.write(self.render(template, context, globals, layout))

index.wsgi

1
2
3
4
5
6
7
8
9
10
11
12
13
import sae

import tornado.wsgi

from view import urls as view_url

settings = {
    "debug" : True,
}

app = tornado.wsgi.WSGIApplication( view_url, **settings)

application = sae.create_wsgi_app(app)

view.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# -*- coding: utf-8 -*-

from time import time

from common import BaseHandler

###############
class HomePage(BaseHandler):
    def get(self):
        self.echo('home.html', {
            'title': "测试",
            'name': "name text",
            'timestamp':  int(time()),
            'html_text': "# H1标签",
        })

class NotFoundPage(BaseHandler):
    def get(self):
        self.set_status(404)
        self.write("404: Not found")

########
urls = [
    (r"/", HomePage),
    (r".*", NotFoundPage)
]

本例所有代码打包下载 http://code.google.com/p/sae-python-tornado-pytenjin-sample/

本文网址: https://pylist.com/topic/14.html 转摘请注明来源

Suggested Topics

SAE Python上开启gzip的方法

开启 gzip 的作用自不必说,可以省很多流出带宽,可以省很多云豆。昨天这个博客的云豆消耗,其中流出带宽就占九成多,开启后就会只占五成多。...

tornado websocket 客户端与服务器端示例

最近在网上找了些websocket的资料看了下,node和tornado等等本身已经实现了websocket的封装,所以使用起来会比较简单,php如果想要写websocket还需要自己跑一整套流程,比较麻烦。...

Leave a Comment