编程语言
首页 > 编程语言> > python – Tipfy&Jinja:为每个页面创建一个注销URL

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