一尘不染

Django基于类的DeleteView的示例

django

有谁知道或可以请提供一个简单的Django基于类的通用DeleteView示例吗?我想继承DeleteView的子类,并确保当前登录的用户在删除对象之前拥有该对象的所有权。任何帮助将不胜感激。先感谢你。


阅读 895

收藏
2020-03-30

共1个答案

一尘不染

这是一个简单的例子:

from django.views.generic import DeleteView
from django.http import Http404

class MyDeleteView(DeleteView):
    def get_object(self, queryset=None):
        """ Hook to ensure object is owned by request.user. """
        obj = super(MyDeleteView, self).get_object()
        if not obj.owner == self.request.user:
            raise Http404
        return obj

注意事项:

  • DeleteView不会删除GET请求; 这是你提供带有此视图template_name的“是,我确定”按钮的确认模板(你可以在class属性中提供名称)POST的机会。
  • 你可能更喜欢错误消息而不是404?在这种情况下,请改写delete方法,在get_object调用后检查权限并返回自定义响应。
  • 不要忘记提供与(可选的,可自定义的)success_url类属性匹配的模板,以便用户可以确认该对象已被删除。
2020-03-30