我的布局模板包含一个标题,我想在当前选择的菜单选项中添加一个CSS类。
class="active"
我以为我找到了解决方案here,但我仍然遇到问题。当我将以下代码粘贴到我的模板中时,我收到服务器错误。
{% rule = request.url_rule %}
为什么这不起作用?如何设置变量来控制模板中的菜单?
答案 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',
)
事实证明,在我的情况下,我并不需要访问当前的网址。