在 Flask 中处理 URL 中的 & 符号

Lym*_*rga 5 python url-routing jinja2 flask

我是使用 Flask 和 Jinja2 模板进行 Web 开发的新手。模板中 HTML 表格的一行中的一列是:

<td><a> href="/plot?label={{stats[0]}}">{{stats[0]}} </a></td>
Run Code Online (Sandbox Code Playgroud)

stats[0]是一个字符串变量,可能包含“&”,例如“Eggs & Spam”。现在在视图(views.py)中:

@app.route("/plot", methods = ["GET", "POST"])
@login_required
def on_plot():
    data = request.args
    label_name = data['label']
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到的data结果ImmutableMultiDict([(' Spam', u''), ('label', u'Eggs ')]) 是不正确的。相反我想要ImmutableMultiDict([('label', u'Eggs & Spam ')])

那么我该如何处理这个案子呢?我尝试这样做{{stats[0]|escape}},但没有成功。

Mar*_*ers 4

您想从视图构建 URL,使用url_for

<td><a> href="{{ url_for('on_plot', label=stats[0]) }}">{{stats[0]}} </a></td>
Run Code Online (Sandbox Code Playgroud)

url_for()方法将为您构建一个查询字符串并适当地转义&符号。