在GoogleAppEngine中使用JavaScript和服务器端Python代码动态生成客户端HTML表单控件
我有以下使用Jinja2模板引擎的客户端前端HTML:在GoogleAppEngine中使用JavaScript和服务器端Python代码动态生成客户端HTML表单控件,javascript,python,google-app-engine,Javascript,Python,Google App Engine,我有以下使用Jinja2模板引擎的客户端前端HTML: {% for record in result %} <textarea name="remark">{{ record.remark }}</textarea> <input type="submit" name="approve" value="Approve" /> {% endfor %} 但是,在某些情况下,更新的记录不是与单击的提交按钮对应的记录(例如,如果用户单击记录1提交
{% for record in result %}
<textarea name="remark">{{ record.remark }}</textarea>
<input type="submit" name="approve" value="Approve" />
{% endfor %}
但是,在某些情况下,更新的记录不是与单击的提交按钮对应的记录(例如,如果用户单击记录1提交,则记录2备注会更新,但不会更新记录1)
我推测这是由于重复的属性名注释造成的。我可以使用JavaScript/jQuery生成不同的属性名。问题是,如何编写后端Python以获得JavaScript生成的(可变数量的)名称
谢谢。已编辑 在模板内用于循环使用:循环的当前迭代 然后: 我没有测试就写了这个。可能不起作用,但可以给你一个提示
新的[更好的]解决方案 将每对文本区域和输入放入表单中:
{% for record in result %}
<form>
<textarea name="remark">{{ record.remark }}</textarea>
<input type="submit" name="approve" value="Approve" />
</form>
{% endfor %}
{%用于结果%中的记录]
{{record.remark}
{%endfor%}
非常感谢您的回答。代码看起来不错。但是,提交按钮的标签现在将显示1、2、3,而不是批准?如果我将HTML改为name=“approve{{{loop.index}}”,是否有一种有效的方法来相应地更改后端代码?谢谢
{% for record in result %}
<textarea name="remark{{ loop.index }}">{{ record.remark }}</textarea>
<input type="submit" name="approve" value="{{ loop.index }}" />
{% endfor %}
<textarea name="remark1">first record remark</textarea>
<input type="submit" name="approve" value="1" />
<textarea name="remark2">second record remark</textarea>
<input type="submit" name="approve" value="2" />
<textarea name="remark2">third record remark</textarea>
<input type="submit" name="approve" value="3" />
def post(self):
if self.request.get('approve'):
updated_remark = self.request.get('remark' + self.request.get('approve'))
record.remark = db.Text(updated_remark)
record.put()
{% for record in result %}
<form>
<textarea name="remark">{{ record.remark }}</textarea>
<input type="submit" name="approve" value="Approve" />
</form>
{% endfor %}