Python flask - 基于JSON varibale编码链接

时间:2016-11-17 15:56:18

标签: python json hyperlink urllib encode

我在Python烧瓶中创建了一个应用程序,我正在努力编码我的链接。在我的HTML模板中,我从JSON调用数据并基于JSON中的变量,我想创建一个指向另一个页面的链接,但是那些具有" space"的变量。在它们中,只取第一个单词,链接不能正常工作。

这是我的JSON:

[
   {
      "team":"AFC Bournemouth"
   },
   {
      "team":"Arsenal"
   }
]

这是我的python:

@app.route('/<team>/')
def artist(team):
    json_data=open('static/data.json').read()
    data= json.loads(json_data)
    urllib.quote_plus(data.team)
    return render_template("team.html", team=team)

我试图使用&#34; urllib.quote_plus&#34;但是我收到了错误

  

AttributeError:&#39; list&#39;对象没有属性&#39; team&#39;

我不知道如何修复它。

这是我在html中的循环:

{% for data in results %}
    <div class="team">
        <p><a href=/{{ data.team }}>{{ data.team }}</a></p>
    </div>
{% endfor %}

在我使用之前&#34; urllib.quote_plus&#34; &#34; Arsenal&#34;的链接工作完美,但是对于AFC伯恩茅斯&#34;它只接受了'#34; AFC&#34;。

这个词

1 个答案:

答案 0 :(得分:0)

奇怪的是,它正在为阿森纳&#34;正常工作。实际上你应该遍历&#34;数据&#34;因为它是一个列表

示例:

@app.route('/<team>/')
def artist(team):
    json_data=open('static/data.json').read()
    data= json.loads(json_data)
    data = [{'team': urllib.quote_plus(team['team'])} for team in data]
    return render_template("team.html", results=data)

另一件事是,在render_template中,您发送的是变量团队而不是结果(在我的示例中已更改)。这样它就可以了,并且可以使用你的Jinja模板。

编辑:更改列表理解