2016-10-16 14 views
-1

私はフラスコのウェブサイトプロジェクトを行っていて、それぞれのアイテムの個別アイテムページを作成しようとしています。私はデータベースにsqliteを使用しています。PythonフラスコのWebページ複数のアイテムの単一アイテムページ

以下

私のホームページのHTMLコードです:HTMLの

{% extends "base-template.html" %} 

{% block content %} 
<h1>Valves</h1> 
<form action="/product-info" methods=["link", "post"] class="valve-box"> 


    {% for valve in valve_list %} 
     <li> 

      <b>Name/Model:</b> {{ valve['item_name'] }}<br> <b>Price:</b> {{  valve['item_price'] }}$ 
      <input type="submit" value="Go to info page"/> 


     </li> 
    {% endfor %} 



</form> 
{% endblock %} 

これは、基本的項目の垂直方向のリストです。アイテムに興味があるときは、アイテムの横にあるボタンを押して、自分のフォルダ内のルートファイルから製品情報ページに移動します。以下は

私の製品情報ページのHTMLコードです:

{% extends "base-template.html" %} 

{% block content %} 
<h1>Information</h1> 

<form class="valve-box"> 

    {% for valve in valve_list %} 
     <li> 

      <b>Item ID:</b> {{ valve['item_id'] }}<br> <b>Name/Model:</b> {{  valve['item_name'] }}<br> <b>Description:</b> {{ valve['description'] }}<br>  <b>Price:</b> {{ valve['item_price'] }}$ 



     </li> 
    {% endfor %} 


</form> 
{% endblock %} 

問題は、私は唯一のユーザーが興味を持っていたとのプレス品の情報を表示し、対話型製品の情報ページが必要です。どうやってやるの?

答えて

1

Pythonファイルに新しい@app.routeを作成して、個々の製品の情報を表示し、各バルブにリンクを追加します。それは次のようになります。Pythonのファイルで

<!-- other HTML up here --> 
{% for valve in valve_list %} 
    <li> 
     <b>Item ID:</b> {{ valve['item_id'] }}<br> 
     <b>Name/Model:</b> {{ valve['item_name'] }}<br> 
     <b>Description:</b> {{ valve['description'] }}<br>  
     <b>Price:</b> {{ valve['item_price'] }}$ 
     <a href='{{ url_for("show_valve", valve_id=valve["item_id"]) }}'>Show detail</a> 
    </li> 
{% endfor %} 
<!-- the rest of your HTML --> 

あなたの新しい機能は、お使いのテンプレートにより送信されたIDを受け入れます、そしてあなたは、単にその項目のページを構築することができます。ここで私はPythonコードに新しい機能のために考えているものの例です:

@app.route('whatever/address/you/want') 
def show_valve(valve_id): 
    # get your list of valves from wherever it comes from 
    for valve in valves: 
     if valve["item_id"] == valve_id: 
      target_valve = valve 
      break 
    return render_template('showValveDetail.html', valve=target_valve) 
+0

もう一つ質問、個々の製品の情報を表示するためには、私はいくつかに持っているどのアイテムのユーザーがHTMLファイル内でクリックされたものは何でもリンク私のルートファイル。これのための私の最初のアイデアは、 "the_item_user_just_clicked_on"のような変数をhtmlファイルに作成し、変数をPythonルートfleにインポートすることでしたが、docsではhtmlで変数を持つことはできません。 – pythonsohard

+0

あなたの新しいルート機能を設定したら、ここで 'show_valve'という名前を付けましたが、名前を'私が答えているHTMLコードは既に 'valve [" item_id "]'を送信しています。したがって、あなたのPythonコードでは、そのIDを使用してバルブリストを検索し、必要なものを見つけることができます( '' item_id "'が各 'valve 'に固有のものであると仮定します)。 – coralvanda

+0

これを試してみましたが、何らかの理由でshow_valve関数呼び出しが正常に機能していません。show_valve関数は正確に1の値をとります。 – pythonsohard

関連する問題