我想在Django简单的修改/删除形式。
我希望它看起来像:
Item A edit / remove
Item B edit / remove
Item C edit / remove
我想编辑和删除“按钮”是超链接,或者至少看起来像他们一样。
有没有一种简单的方法无需多次提交按钮(和不违反整个POST / GET的东西?)
我想在Django简单的修改/删除形式。
我希望它看起来像:
Item A edit / remove
Item B edit / remove
Item C edit / remove
我想编辑和删除“按钮”是超链接,或者至少看起来像他们一样。
有没有一种简单的方法无需多次提交按钮(和不违反整个POST / GET的东西?)
你可能会做的更好不是使用表格来实现这一点,因为有(从你所描述的)不需要的表单元素。
相反,你可以有一个安装在你的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>
...或东西全部效果...
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.
我做这样的事情了类似的问题:把这个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。