2016-10-03 15 views
-1

私は、ユーザーがリストをブラウズしてその1つをクリックし、クリックした商品の詳細については「シングルページ」に送信できるページに多数の投稿を表示しています。このメソッドは、最初のリンクを除くすべてのリンクで機能します。このリンクが動作しないのはなぜですか?

いつでもページの最初のリンクをクリックすると、が見つかりません:要求されたURLがサーバー上に見つかりませんでした。手動でURLを入力した場合は、スペルを確認してもう一度お試しください。エラー。

私はHMTL /神社のための場所を持っているロジックは、(すべてが適切に閉鎖され、私は簡潔にするためにいくつかの不要なコードを切断しています)です:

{% set i = 0 %} 
    {% for row in data %} 
     {% set i = i + 1 %} 

         <a href="/iLike/{{ i }}"> 
           <li>content</li> 
         </a> 

と私のpythonコード:

@app.route('/iLike/<int:num>', methods=['GET','POST']) 
def single2(num): 
    try: 
    loc = session.get('loc') 
    transType = session.get('transType') 
    data = singlesQuery() 


    return render_template('single.html', loc=loc,transType=transType,data=data[num-1]) 
except Exception as e: 
    return (str(e)) 
+0

jinja2に既に 'loop.index'があります。あなたは' set i 'する必要はありません。 – Soviut

+0

リンク上にカーソルを置いたときにURLには何が表示されますか? – Soviut

+0

ローカルホストを使用してURLを表示/ iLike/1/@Soviut – user3344239

答えて

2

URLを手動で構築する必要はありません。それはフラスコの組み込み関数url_for使用するための最良の方法:そこにビルトインされbecaue loop.indexloop.index0

{{url_for('single2', num=i)}} 

は、手動でiを計算する必要もありません:

{% for row in data %} 
    <a href="{{url_for('single2', num=loop.index)}}"> 

私は信じていますこれにより、常に有効なURLが作成されます。

+0

まだ最初のリンクでエラーが発生しています。うーん。 @zvone私は第2の提案に切り替えました.. – user3344239

+0

@ user3344239コメントの末尾にスラッシュを付けました;とにかく、ここにこのコードの末尾にスラッシュがありますか? – zvone

+0

後ろにスラッシュを付けないようにしました。これは正解です。 'url_for()'は、スラッシュを付けずにURLを適切に書式設定するために使用してください。 – Soviut

関連する問題