我正在使用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)
答案 0 :(得分:3)
要区分不同的表单,您需要一些唯一的密钥,例如隐藏的输入标记,其中包含ID:
<input type="hidden" name="post_id" value="{{post.id}}">
对于index-Form,您可以将值&#34; new&#34;用作通用ID。