如何在Flask Web应用程序中将参数传递给包含的html

时间:2015-06-19 15:54:37

标签: python flask

我正在使用flask开发python中的博客应用程序。在视图中,函数表单作为参数传递给render_template,后者调用' index.html'。 form按预期在index.html中工作。但有一个{%include'' %}标记位于&post; post.htm'。现在我想在&postcen.html'中重复使用相同的表单。怎么做?传递给index.html的表单是否可用于包含' post.html'也?如果是这样,如何确定在渲染页面中按下哪个按钮,因为两种形式都相同?我的index.html文件:

{% extends "base.html" %}
{% block content %}
  <h1>Hi, {{ g.user.nickname }}!</h1>
  <form action="" method="post" name="post">
       {{ form.hidden_tag() }}
    <table>
       ..........
       .......... 
       <tr>
          <td><input type="submit" value="Post!"></td>
       </tr>
     </table>
   </form>


   {% for post in posts.items %}
     <div class="{{ post.id }}">
       <div>
          {% include 'post.html' %}
       </div>
     </div>
   {% endfor %}

{% endblock %}

我的post.html为:

<table>
    ..........
    ..........
    <tr valign="top">
        <td>{{ post.body }}</td>
    </tr>
    <tr>
    <form action="" method="post" name="post">
       {{ form.hidden_tag() }}
       <table>
           .........
           ......... 
           <td><input type="submit" value="Post!"></td>                  
       </table>
    </form>

</table>

是否可以在两个html文件上使用相同的表单。由于渲染网页中会有多个表单字段,如何识别按下哪个按钮? index.html使用代码呈现:

return render_template('index.html',
                           title='Home',
                           form=form,
                           posts=posts)

1 个答案:

答案 0 :(得分:3)

要区分不同的表单,您需要一些唯一的密钥,例如隐藏的输入标记,其中包含ID:

<input type="hidden" name="post_id" value="{{post.id}}">

对于index-Form,您可以将值&#34; new&#34;用作通用ID。