【发布时间】:2014-08-07 08:46:29
【问题描述】:
我正在使用 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 或 DeleteView。
【问题讨论】:
-
为什么您认为切换到基于类的视图可以满足您的要求?就前端而言,基于类和基于函数的视图的工作方式完全相同。切换绝对没有区别。
-
由于您指的是删除操作,因此应该使用 DeleteView,为了添加您的自定义逻辑,只需覆盖默认方法即可。 ccbv.co.uk
-
但我并没有删除记录。只需更新模型中的字段,例如在回收站中显示为已删除。
标签: django django-class-based-views