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

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

风格和源码跟https://github.com/ego008/saepy-log 80 相同,还是简单介绍一下。

文件目录结构:

|-- 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

# -*- 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

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

# -*- 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/ 10

Relative Articles