将“取消”按钮添加到Django中的基于类的通用视图的最佳方式是什么?如何在django中添加取消按钮到DeleteView
在下面的例子中,我想取消按钮带你到success_url
而不删除对象。我曾尝试将一个按钮<input type="submit" name="cancel" value="Cancel" />
添加到模板。我可以通过覆盖AuthorDelete
类的post方法来检测这个按钮是否被按下,但是我无法确定如何从那里重定向。
实施例的myapp/views.py:
from django.views.generic.edit import DeleteView
from django.core.urlresolvers import reverse_lazy
from myapp.models import Author
class AuthorDelete(DeleteView):
model = Author
success_url = reverse_lazy('author-list')
def post(self, request, *args, **kwargs):
if request.POST["cancel"]:
return ### return what? Can I redirect from here?
else:
return super(AuthorDelete, self).post(request, *args, **kwargs)
实施例的myapp/author_confirm_delete.html:
<form action="" method="post">{% csrf_token %}
<p>Are you sure you want to delete "{{ object }}"?</p>
<input type="submit" value="Confirm" />
<input type="submit" name="cancel" value="Cancel" />
</form>
(改编自docs实施例)
这些都是这种方法的好理由。但要做到这一点,我不得不将success_url添加到模板上下文中,所以我仍然需要修改python代码。 –
@MichaelDunn其实你可以通过{{view.success_url}}来访问url地址,所以不应该有额外的python代码 – MatheusJardimB