0

ユーザー側で、フォームから学校の記録を選択して下の表に表示するとします。

たとえば、名前のリストから自分の名前を選択すると、データベースからレコードが取得されます。

学年によっては、1 年、2 年、3 年、または 4 年の記録があるため、取得されるデータは常に異なって見えます。

フォームを送信すると、レコードはすべてのレコードを含む変数に格納され、各レコードはサブタイプ (英語部門のすべてのレコードなど) に分類されます。これらのサブタイプは他のリストに保存されているため、すべての英語のレコードのリストがあります。その変数をenglish_recordsと呼びましょう。これらのサブタイプ変数を使用して、ユーザーが見たいデータのみを表示し、その特定のリスト内のすべてのデータを表示できるようにしたいと考えています。

そこで、Flask の render_template 関数を使用して、これらの各レコードを、各レコードのテーブル セルを作成する html テンプレートに送信しようとしています。

私が試してきたこと(これまでのところうまくいきませんでした)は次のようなものです:

パイソン:

i = 0
def index():
    for e in english_records:
        english_records = [
            { 
                'english': english_records[i]
            }
        ]
        i = i + 1
    return render_template("index.html",
        english_records = english_records)

そしてHTMLで:

...table above...
{% for record in english_records %}
<td>
  {{record.english}}
</td>
{% endfor %}
...table continues...

これまでのところ、レコードごとに作成された表のセルを取得していますが、レコードは渡されていません。誰でもこれを行う方法を知っていますか?

4

2 に答える 2

2

データを前処理する理由はありますか? どのようにenglish_records見えますか?for私の勘が正しければ、実際にはループはまったく必要ないはずです。

forループ内で初期english_records変数を上書きしているという問題もあるため、代入は構文的には合法ですが、論理的には無意味です。english_records

もう 1 つの問題は、最初の の実際の型によってはenglish_records、カウンターを使用する必要がないことです。english_recordslistの場合、探している値が含まれます。english_recordsが の場合dict、列挙すると のようになりfor key, val in english_records.iteritems()ます。

于 2013-02-20T08:35:48.807 に答える
0
 for e in english_records:
        english_records = [
            { 
                'english': english_records[i]
            }
        ]
        i = i + 1

ここでのこのループはリストを作成していますが、これらのリストのメンバーには「english」キーがないため、テンプレートではループが実行されますが、の値がないため{{record.english}}、無視されます。取得するのは、データのないテーブル行だけです。

于 2013-02-20T08:31:37.300 に答える