python – Tipfy&Jinja:为每个页面创建一个注销URL
作者:互联网
我有一个jinja模板,带有通常的样板链接,其中一个是“退出”链接.在呈现页面之前,必须使用Users.create_logout_url()生成此链接的URL.
我想避免生成此URL并将其添加到每个get / post处理程序的render_response中.我已经研究过替代品,但还没有找到一种功能性的方法来解决这个问题.
BaseRequestHandler
这似乎是最干净的方法,但我不确定如何去做.会不会是这样的
self.vars['logout_link'] = users.create_logout_url(self.request.path))
..然后,在所有标准响应处理程序中:
return render_response('template.html', **vars)
?
装饰
这似乎是另一种选择,虽然看起来有点凌乱.我想它可以以相同的方式工作(将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))
然后我可以继承例如表单处理程序的basehandler:
class FileUploadFormHandler(BaseHandler):
def get(self):
...
self.render_jinja('contact_jinja', form=form, ...
标签:python,google-app-engine,jinja2,tipfy 来源: https://codeday.me/bug/20190721/1494735.html