1

Flask フレームワークを使用して簡単なブログ Web サイトを作成しようとしています。私のブログの各エントリには、タイトル、テキスト、およびコメントがあります。タイトルとテキストは、entries という名前のテーブルに格納され、コメントは、comments という名前のテーブルに格納されます。コメントは、コメントを対応するエントリに外部キーでリンクします。

私が今抱えている問題は、html ファイルにコメントを表示したいということです。やるべきことは、for ループにいる間に、HTML ファイルで show_comments という名前の python 関数を呼び出したいということです。python 関数は次のようになります。

@app.route('/comments/<entryid>')
def show_comments(entryid):
    db = get_db()
    curId = db.execute('select id, comment from comments where entry_id=entryid order by     id desc')
    comments = [dict(id=row[0], comment=row[1]) for row in curId.fetchall()]
    return render_template('show_entries.html', comments=comments)

私のテンプレートは次のようになります。

% extends "layout.html" %}
{% block body %}
  {% if session.logged_in %}
    <form action="{{ url_for('add_entry') }}" method=post class=add-entry>
      <dl>
    <dt>Title:
    <dd><input type=text size=30 name=title>
    <dt>Text:
    <dd><textarea name=text rows=5 cols=40></textarea>  
    <dd><input type=submit value=Share>
  </dl>
</form>
  {% endif %}
  <ul class=entries>
  {% for entry in entries %}
    <li><h2>{{ entry.title }}</h2>{{ entry.text }}
{{ url_for('show_comments', entryid=entry.id) }}
<ul class=comments>
{% for acomment in comments %}
<li>{{ acomment.comment }}
</li>
</br>
</ul>
{% endfor %}
{% if session.logged_in %}
<form action="{{ url_for('add_comment', key=entry.id) }}" method=post class=add-entry>
<dl>
    <dt>Comment:
    <dd><textarea name=comment rows=2 cols=40></textarea>
    <dd><input type=submit value=Comment>
  </dl>
</form>
{% endif %}
  {% else %}
    <li><em>Unbelievable.  No entries here so far</em>
  {% endfor %}
  </ul>
{% endblock %}
4

1 に答える 1

1

あなたはあなたの問題が何であるかを私たちに本当に伝えていないので、これが役立つかどうかわかりません. しかし、ここで 3 つの具体的な間違いを指摘します。

1 つ目は、コメントを順不同のリスト (<ul>タグ) に入れているが、終了タグ ( </ul>) をループの外側ではなくループの内側に置いていることです。

</br>と書かれているはずですが<br />、そもそもそのタグはそこに属していません。

次に、HTML が壊れています。HTML 属性 ( のようなタグ内の部分type=submit) では、値を引用符で囲む必要があります。たとえば、次のようになりますtype="submit"。ほとんどのブラウザーは、そのようなことに関しては寛大ですが、それを当てにせず、正しい HTML を作成することをお勧めします。

于 2012-11-12T19:50:59.850 に答える