2013-04-06 73 views
6

我有一個ListView和DeleteView刪除項目在Django 1.5

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> 

任何人都可以讓我走向正確的方向嗎?謝謝。

回答

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> 
+0

如果我需要檢查用戶是否是對象的所有者,該怎麼辦?是不是像 畫質得到(自,* ARGS,** kwargs): \t self.object = self.get_object() \t如果self.object.user == self.request.user: \t \t返回self.delete(*參數,** kwargs) \t else: – user2232982 2013-04-07 07:51:18

+0

是的,這將工作。但你需要決定如果他不是(返回HttpResponseForbidden?) – 2013-04-07 09:04:16

+2

-1 GET應該是** [安全](http://www.w3.org/2001/tag/doc/whenToUseGet.html#safe) ** – 2013-04-12 07:43:34

2

你竟已的right方式, POST。

<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:鏈接。