Jinja2 后处理为所有链接添加查询字符串?
我想做的是渲染一个jinja2模板,但如果某个环境变量为真(edit_mode),我希望在所有“a”标签的链接后面加上 ?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
你为什么不在路由层面上加这个呢?“编辑”是不是用不同的方式来处理的?可以像下面这样做:
@app.route('page/', defaults={'edit': app.config['edit_mode']})
# if edit do something here
(或者如果可以的话,你也可以用JavaScript很简单地做到这一点……)