Cer*_*rzi 3 python google-app-engine jinja2 tipfy
我有一个jinja模板,带有通常的样板链接,其中一个是"退出"链接.在呈现页面之前,必须使用Users.create_logout_url()生成此链接的URL.
我想避免生成此URL并将其添加到每个get/post处理程序的render_response中.我已经研究过替代品,但还没有找到一种功能性的方法来解决这个问题.
BaseRequestHandler
这似乎是最干净的方法,但我不确定如何去做.会不会是这样的
self.vars['logout_link'] = users.create_logout_url(self.request.path))
Run Code Online (Sandbox Code Playgroud)
..然后,在所有标准响应处理程序中:
return render_response('template.html', **vars)
Run Code Online (Sandbox Code Playgroud)
?
装饰
这似乎是另一种选择,虽然看起来有点凌乱.我想它可以以相同的方式工作(将logout链接分配给包装函数中的局部变量).
上下文处理?
我正在使用tipfy/jinja,据我所知,这似乎不支持这个.
有什么建议我应该进一步调查吗?
谢谢
我使用Jinja/GAE做类似的事情,我使用BaseHandler +我包含的模板.BaseHandler:
class BaseHandler(webapp2.RequestHandler):
...
def render_jinja(self, name, **data):
data['logout_url']=users.create_logout_url(self.request.uri)
template = jinja_environment.get_template('templates/'+name+'.html')
self.response.out.write(template.render(data))
Run Code Online (Sandbox Code Playgroud)
然后我可以继承例如表单处理程序的basehandler:
class FileUploadFormHandler(BaseHandler):
def get(self):
...
self.render_jinja('contact_jinja', form=form, ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
617 次 |
| 最近记录: |