我有一个jinja模板与通常的样板链接,其中之一是“注销”链接。在呈现页面之前,必须使用Users.create_logout_url()生成该链接的URL。
我希望避免为每个get/post处理程序生成这个URL并将其添加到我的render_response中。我已经研究过其他的方法,但是还没有找到一种实用的方法来解决这个问题。
BaseRequestHandler
这似乎是最干净的方法,但我不知道该怎么做。会不会是
self.vars['logout_link'] = users.create_logout_url(self.request.path))然后,在所有标准响应处理程序中使用..and:
return render_response('template.html', **vars)解码器
这似乎是另一种选择,尽管看起来有点混乱。我认为它将以同样的方式工作(将注销链接分配给包装器函数中的局部变量)。
上下文处理?
我正在使用tipfy/jinja,据我所知,它似乎不支持这一点。
有什么建议吗?我应该进一步调查哪条路?
谢谢
发布于 2011-12-01 08:27:05
我对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))然后,我可以继承例如表单处理程序的基处理程序:
class FileUploadFormHandler(BaseHandler):
def get(self):
...
self.render_jinja('contact_jinja', form=form, ...发布于 2011-12-01 02:34:07
由于没有使用这两个框架,我不确定是否有一种很好的方法将其添加到模板中。您可能可以实现某种形式的中间件,但正如我所说,我对这些框架没有经验。
但是,您是否考虑过有一个通用的注销URL,其中有一个处理程序,它将为用户提供一个303给正确的URL?
https://stackoverflow.com/questions/8329204
复制相似问题