Jinja2后期处理将查询字符串附加到所有链接?

时间:2014-04-04 03:00:51

标签: python flask jinja2

我要做的是渲染一个jinja2模板,但如果一个特定的环境变量为true(edit_mode),我想在所有“a”标签的href中添加?edit = 1。

伪代码:

def render_template(tpl, ctx):
    if ctx['edit_mode']:
        return add_query_string_and_render(tpl, '?edit=1', **ctx)
    else:
        return tpl.render(**ctx)

我考虑过以下机制:

  • 使用beautifulsoup解析渲染的html并改变它们(丑陋,但有效)
  • 在编译之前通过jinja2扩展程序对源进行后处理,但之后可能必须禁用缓存

这里有另一个更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:0)

为什么不在路由级别添加它? “编辑”是否以不同的方式路由?

的内容
@app.route('page/', defaults={'edit': app.config['edit_mode']})
# if edit do something here

(如果可以接受的话,你可以使用JavaScript轻松完成..)