2016-11-17 4 views
0

私はPythonフラスコでアプリケーションを作成していますが、リンクをエンコードするのに苦労しています。私のHTMLテンプレートではJSONからのデータを呼び出していて、JSONの変数に基づいて別のページへのリンクを作成したいが、その中に「スペース」がある変数は最初の単語だけを取り、リンクはそれはすべきだ。Pythonフラスコ - JSON varibaleに基づいたリンクのエンコーディング

これは私の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) 

私は "urllib.quote_plus" を使用しようとしているが、私はエラー

AttributeError: 'list' object has no attribute 'team'

を取得

私はそれを修正する方法がわかりません。

そして、これはHTMLの私のループである:私は「urllib.quote_plus」「アーセナル」は、完璧に働いたためではなく、「AFCボーンマス」のリンクを使用する前に、それが唯一の単語を取っ

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

「AFC」 。

答えて

0

「アーセナル」で正しく動作しているのは奇妙です。それはリスト

例ですので、実際にあなたが「データ」を反復処理する必要があります。

@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テンプレートでうまく動作するはずです。

編集:変更されたリストの理解

+0

回答ありがとうございますが、それでも動作しません。 – Animalovsky

+0

あなたはどんな種類のバグを書くことができますか? – WhereIsMySnake

+0

私はちょうど私が間違ってコードを書くことに気づいた、今それはうまくいくはずです – WhereIsMySnake

関連する問題