从Django 1.5中的ListView中删除项目

时间:2013-04-06 23:01:27

标签: python django templates listview

我有一个ListView和一个DeleteView

class MyDeleteView(DeleteView):
    success_url = reverse('list')

我想要选项删除ListView中的项目。如果我接受DeleteView中的确认页面,我知道怎么做,但我不希望我的DeleteView中没有模板。我只是想删除该项目并将用户发回。

我想它应该是POST参数,但HTML应该是什么样的?我想这就像是:

<form method="post" action="/delete/">
    <ul>
        <li>Item1 (<input type="submit" value="Delete" />)</li>
        <li>Item2 (<input type="submit" value="Delete" />)</li>
        <li>Item3 (<input type="submit" value="Delete" />)</li>
    </ul>
</form>

有人能引导我朝着正确的方向前进吗?谢谢。

2 个答案:

答案 0 :(得分:2)

您已经使用POST进行了right方式。

<ul>{% for item in object_list %}        
    <li><form method="post" action="{% url 'mydelete' pk=item.pk %}">
          {{item}} (<input type="submit" value="Delete" />)
    </form></li>
{% endif %}</ul>

我不完全确定输入是否可以直接在您尝试遵守的HTML规范中的表单中。所以你可能不得不用一些跨度或容器来表达这个想法。

如果输入提交,并没有为您的设计师提供足够的样式自由,您可以将它们用作<noscript>后备,并为漂亮版本添加一些<button>或javascript:链接。

答案 1 :(得分:0)

由于您不想要确认,您可以在deleteview中覆盖GET方法并只使用链接:

class MyDeleteView(DeleteView):
    success_url = reverse('list')

    def get(self, *a, **kw):
        return self.delete(*a, **kw)

<ul>
    {% for item in object_list %}
        <li>Item1 (<a href="{% url 'mydelete' pk=item.pk %}">Delete</a>)</li>
    {% endif %}
</ul>