[python]pyramid 学习6 (template)

直接调用模板

from pyramid.renderers import render_to_response

def sample_view(request):
return render_to_response('templates/foo.pt',
{'foo':1, 'bar':2},
request=request)

 

Response输出

from pyramid.renderers import render
from pyramid.response import Response

def sample_view(request):
result = render('mypackage:templates/foo.pt',
{'foo':1, 'bar':2},
request=request)
response = Response(result)
return response


view_config中定义模板

from pyramid.view import view_config

@view_config(renderer='templates/foo.pt')
def my_view(request):
return {'foo':1, 'bar':2}

 

ZPT宏的运用(chameleon)

from pyramid.renderers import get_renderer
from pyramid.view import view_config

@view_config(renderer='templates/mytemplate.pt')
def my_view(request):
main = get_renderer('templates/master.pt').implementation()
return {'main':main}

templates/master.pt

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:tal
="http://xml.zope.org/namespaces/tal"
xmlns:metal
="http://xml.zope.org/namespaces/metal">
<span metal:define-macro="hello">
<h1>
Hello <span metal:define-slot="name">Fred</span>!
</h1>
</span>
</html>

templates/mytemplate.pt

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:tal
="http://xml.zope.org/namespaces/tal"
xmlns:metal
="http://xml.zope.org/namespaces/metal">
<span metal:use-macro="main.macros['hello']">
<span metal:fill-slot="name">Chris</span>
</span>
</html>

 

使用Chameleon的txt模板

from pyramid.view import view_config

@view_config(renderer='templates/mytemplate.txt')
def my_view(request):
return {'name':'world'}

templates/mytemplate.txt

Hello, ${name}!

 

模板错误调试
命令行设置

PYRAMID_DEBUG_TEMPLATES=1 bin/paster serve myproject.ini

ini文件中定义

pyramid.debug_templates = true

 

设置mako模板目录

mako.directories = mypackage:templates

 

使用Mako模板

from pyramid.view import view_config

@view_config(renderer='foo.mak')
def my_view(request):
return {'project':'my project'}

foo.mak

<html>
<head>
<title>${project} Application</title>
</head>
<body>
<h1 class="title">Welcome to <code>${project}</code>, an
application generated by the <a
href="http://docs.pylonsproject.org/projects/pyramid/current/"
>pyramid</a> web application framework.</h1>
</body>
</html>

Mako Template

from mako.template import Template
from pyramid.response import Response

def make_view(request):
template = Template(filename='/templates/template.mak')
result = template.render(name=request.params['name'])
response = Response(result)
return response

 

自动加载模板(如果模板有修改不用重启应用)
命令行

PYRAMID_RELOAD_TEMPLATES=1 bin/paster serve myproject.ini

.ini配置文件

[app:main]
pyramid.reload_templates = true

posted on 2011-10-26 23:49  bluefrog  阅读(1732)  评论(1编辑  收藏  举报