Django的添加/删除表格无需多次提交(Django add / remove form with

2019-07-17 15:10发布

我想在Django简单的修改/删除形式。

我希望它看起来像:

Item A   edit  /   remove
Item B   edit  /   remove
Item C   edit  /   remove

我想编辑和删除“按钮”是超链接,或者至少看起来像他们一样。

有没有一种简单的方法无需多次提交按钮(和不违反整个POST / GET的东西?)

Answer 1:

你可能会做的更好不是使用表格来实现这一点,因为有(从你所描述的)不需要的表单元素。

相反,你可以有一个安装在你的urls.py有2个网址,

url(r'^app/edit/(?P<id>.*)$', edit_view, name='item_edit'),
url(r'^app/remove/(?P<id>.*)$', remove_view, name='item_remove'),

你上述的接口是由简单的使用{%URL%}标签,使超链接到这些地址模板生成。 说,例如,你传递你的上下文中的变量“项目”,你的模板代码看起来像这样

<table>
{% for item in items %}
    <tr>
      <td>{{item.name}}</td>
      <td>{% url 'item_edit' item.id %}</td>
      <td>{% url 'item_remove' item.id %}</td>
    </tr>
{% endfor %}
</table>

...或东西全部效果...



Answer 2:

Create separate form elements for each entry. Include the item.id as a hidden field as you iterate over each item's form in the template.

This is a simple way to use POST-based delete over multiple items, important if you'd like to prevent CSRF attacks.



Answer 3:

我做这样的事情了类似的问题:把这个JavaScript在您的模板:

<script language="javascript">function submit(item_id){
document.myform.item_to_delete.value = item_id;
document.myform.submit();
}
</script>

使用模板来创建每个项目该删除超链接:

<a href="javascript:submit({{ item_id }});">Delete</a>

把这个隐藏表单某处您的网页上:

<form name="myform" method="post" action="/view_to_handle_delete/"><input name="item_to_delete" type="hidden" value=""></form>'

基本上,每个项目都会有一个超链接删除其调用JS提交功能,并将删除的项目。 该js函数提交套一个隐藏的输入值此文件,然后提交表单与输入从而通过POST传递值到URL / view_to_handle_delete /,有你处理它像一个正常的POST请求。 在这里,ITEM_ID将被称为item_to_delete。



文章来源: Django add / remove form without multiple submit
标签: django forms