2017-12-30 24 views
1

HTMLBottlePython)というWebストアを作成しています。 HTMLPythonの間でデータを渡す方法と、HTML(参考:http://karrigell.sourceforge.net/en/pythoninsidehtml.html)の中にPythonというコードを書く方法を知っています。HTML内のPythonコードと渡される変数を組み合わせた

私が苦労しているのはPythonというコードをHTMLからPythonに渡す参照の中に書きます。

私はたくさんあるのでデータベースからイメージを読み込みます。私は設定して、このようなHTMLに変数をimage_name(index)渡す:

@get('/store') 
def showStore(): 
    images = models.images() # reads from database 
    data = ', number_of_images={}'.format(len(images)) 

    for (id, title, path) in images: 
     data += ', image_name{}={}, '.format(id, path) 
     data += 'image_title{}={}'.format(id, title) 

    return template('store.html' + data) 

store.htmlの関連部分:HTML{{image_title}}から渡された値を取得します:Bottle以来

<!-- Portfolio Gallery Grid --> 

<div class="row"> 
    <% for i in range(1, number_of_images+1): %> 
     <div class="column"> 
     <div class="content"> 
      <img src="static/images/{{image_name<%i%>}}.jpg"> 
      <h3> {{image_title<%i%>}} </h3> 
     </div> 
     </div> 
    <% end %> 
</div> 

は、そのよく知られていませんtemplate (html, variables)。ブロック<% %>は、Pythonコードを内部に書き込むことができます。

すべてが、私は、HTML内の画像のプロパティのインデックスを使用しそうHTMLfor loopが仕事をしなかったとき、問題はこの部分である適切に働いていた:

{{image_title<%i%>}} 

<%i%>は私の意見で作成する必要があります変数image_titleiしかし明らかにそうではありません。

私が.pyファイルを渡している変数がHTMLに存在しない可能性が高いため、template not foundというエラーが発生します。

すべてのイメージをハードコードする代わりに、これを動的に実行する理由は、私がそれらのイメージをたくさん持ち、すべてのイメージには関連するデータの全テーブルがあります。イメージの名前とタイトルと同じ方法です。

私は本当に動的

答えて

4

それをやりたいので、私は物事のかなり大きな数が間違ってここにありで渡された変数でHTMLPythonを組み合わせ、適切で任意の助けをいただければ幸いです。

あなたのテンプレートが見つかりませんでしたエラーは、実際にはそのテンプレート内でやっている変な操作とは関係ありません。これは、あなたの呼び出しでテンプレート名をdata文字列で連結しているためです。template()のPythonコードの最後の行にあります。私はボトルを知らないが、私は絶対に肯定的だデータは、その関数の2番目のパラメータである必要があります:あなたはそこに行っている何かをする必要は全くありません、残りの部分については

return template('store.html', data) 

リストのように画像を渡し、テンプレート内のそのリストを反復するだけです。動的変数はです。常にという悪い考えです。これは標準のPythonコードと同じようにテンプレートにも当てはまります。

(ただし、ダイナミック変数を作成しなくても、1つの文字列しか持たず、変数代入のように書式設定されていますが、実際には変数を割り当てません)

+0

私はちょうどリスト自体に渡すことができます気づかなかった、ありがとう:) – Larisa

関連する問題