如何在模板中设置变量

时间:2015-04-27 16:28:53

标签: python flask

我的布局模板包含一个标题,我想在当前选择的菜单选项中添加一个CSS类。

class="active"

我以为我找到了解决方案here,但我仍然遇到问题。当我将以下代码粘贴到我的模板中时,我收到服务器错误。

{% rule = request.url_rule %}

为什么这不起作用?如何设置变量来控制模板中的菜单?

3 个答案:

答案 0 :(得分:3)

{% rule = request.url_rule %}在Jinja中不是有效的语法。如果要从模板设置上下文变量,请使用set

{% set rule = request.rule %}

request已自动传递到每个模板上下文,您无需在render_template中传递它。

答案 1 :(得分:1)

我最好的猜测是请求对象没有传递给模板。如果没有通过,则在呈现模板时您将无法访问它。你可以明确地传递它,看起来像这样:

from flask import request
from flask import render_template

@app.route('/hello/')
def hello():
    return render_template('hello.html', request=request)

答案 2 :(得分:1)

有人评论说,swankswashbucklers回答不会解决我的问题所以我发布了我的解决方案,这是受他的建议启发的。

我只是在创建视图时手动设置名为title的变量。

$("td.gsc-search-button").empty().html('<input type="button" value="search" title="search">');

在模板中,我引用了变量来决定要突出显示哪个菜单项。

def home():
return render_template(
    'index.html',
    title='Home',
)

事实证明,在我的情况下,我并不需要访问当前的网址。