首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tipfy & Jinja:为每个页面创建一个注销URL

Tipfy & Jinja:为每个页面创建一个注销URL
EN

Stack Overflow用户
提问于 2011-11-30 16:18:47
回答 2查看 681关注 0票数 3

我有一个jinja模板与通常的样板链接,其中之一是“注销”链接。在呈现页面之前,必须使用Users.create_logout_url()生成该链接的URL。

我希望避免为每个get/post处理程序生成这个URL并将其添加到我的render_response中。我已经研究过其他的方法,但是还没有找到一种实用的方法来解决这个问题。

BaseRequestHandler

这似乎是最干净的方法,但我不知道该怎么做。会不会是

代码语言:javascript
复制
self.vars['logout_link'] = users.create_logout_url(self.request.path))

然后,在所有标准响应处理程序中使用..and:

代码语言:javascript
复制
return render_response('template.html', **vars)

解码器

这似乎是另一种选择,尽管看起来有点混乱。我认为它将以同样的方式工作(将注销链接分配给包装器函数中的局部变量)。

上下文处理?

我正在使用tipfy/jinja,据我所知,它似乎不支持这一点。

有什么建议吗?我应该进一步调查哪条路?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-01 08:27:05

我对Jinja / GAE做了类似的操作,我使用了一个BaseHandler +一个我包含的模板。BaseHandler:

代码语言:javascript
复制
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))

然后,我可以继承例如表单处理程序的基处理程序:

代码语言:javascript
复制
class FileUploadFormHandler(BaseHandler):
    def get(self):
        ...
        self.render_jinja('contact_jinja', form=form, ...
票数 6
EN

Stack Overflow用户

发布于 2011-12-01 02:34:07

由于没有使用这两个框架,我不确定是否有一种很好的方法将其添加到模板中。您可能可以实现某种形式的中间件,但正如我所说,我对这些框架没有经验。

但是,您是否考虑过有一个通用的注销URL,其中有一个处理程序,它将为用户提供一个303给正确的URL?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8329204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档