2014-06-17 91 views
-1

我正在使用Django 1.6.5。基本上我想要的是,當用戶點擊「刪除」鏈接時,不會顯示任何表單。只需更新*_deleted_at字段,然後顯示收件箱,而不重定向到message_confirm_delete.html模板。如何將基於功能的視圖更改爲基於類的視圖

考慮以下幾點:

urls.py

... 
url(r'^delete/(?P<message_id>[\d]+)/$', delete, name='messages_delete'), 
... 

views.py

def delete(request, message_id, success_url=None): 
    user = request.user 
    now = timezone.now() 
    message = get_object_or_404(Message, id=message_id) 
    deleted = False 
    if success_url is None: 
     success_url = reverse('messages:messages_inbox') 
    if 'next' in request.GET: 
     success_url = request.GET['next'] 
    if message.sender == user: 
     message.sender_deleted_at = now 
     deleted = True 
    if message.recipient == user: 
     message.recipient_deleted_at = now 
     deleted = True 
    if deleted: 
     message.save() 
     return HttpResponseRedirect(success_url) 
    raise Http404 

我如何轉換以下功能基礎觀爲一類基於視圖?不知道哪一個適合這裏:UpdateView或​​。

+0

爲什麼你認爲你的要求將被切換到基於類的觀點得到滿足?就前端而言,基於類和基於功能的視圖的工作方式與*完全相同。切換將完全沒有區別。 –

+0

由於您指的是刪除操作,因此應該使用DeleteView,以便添加您的自定義邏輯,只需覆蓋默認方法即可。 http://ccbv.co.uk/ – petkostas

+0

但我沒有刪除記錄。只需更新模型中的字段,例如在垃圾箱中顯示爲已刪除。 – Frankline

回答

0

您還可以使用RedirectView對於這種情況或任何View-類DeletionMixin

相關問題