Django BaseDeleteView抛出AttributeError(缺少渲染到渲染响应)

Django BaseDeleteView抛出AttributeError(缺少渲染到渲染响应),django,django-views,Django,Django Views,我尝试为充当REST后端前端的网站实现一个基于BaseDeleteView的视图。双方都通过HTTP请求进行通信。我想要实现的是,我向激活URI发送一个GET请求(注册后发送每封电子邮件)。在这个视图中,我首先向后端发送一个HTTP请求,然后从前端的数据库中删除激活对象。我不想要确认页面,因此不可能使用DeleteView class ActivationView(BaseDeleteView): success_url = "/activation/success/" def

我尝试为充当REST后端前端的网站实现一个基于BaseDeleteView的视图。双方都通过HTTP请求进行通信。我想要实现的是,我向激活URI发送一个
GET
请求(注册后发送每封电子邮件)。在这个视图中,我首先向后端发送一个HTTP请求,然后从前端的数据库中删除激活对象。我不想要确认页面,因此不可能使用
DeleteView

class ActivationView(BaseDeleteView):
    success_url = "/activation/success/"

    def get_object(self, queryset=None):
        uuid = self.kwargs['uuid']
        try:
            obj = AccountRegistration.objects.get(uuid=uuid)
        except ObjectDoesNotExist:
            raise Http404('Registration not found.')

        return obj

    def delete(self, request, *args, **kwargs):
        obj = self.get_obj()

        if obj.expire_date < datetime.now():
            obj.delete()
            raise Http404('Registration expired.')

        # send a http request to the backend
        t = Transaction('/activate/%s/' % obj.account_name)
        t.emit()

        # delete the object
        obj.delete()

        # and redirect the request
        return HttpResponseRedirect(self.get_success_url())
但我得到了以下错误:

Traceback (most recent call last):
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 68, in __call__
    return self.application(environ, start_response)
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 272, in __call__
response = self.get_response(request)
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/core/handlers/base.py", line 169, in get_response
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/core/handlers/base.py", line 203, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/views/generic/base.py", line 47, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/views/generic/base.py", line 68, in dispatch
    return handler(request, *args, **kwargs)
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/views/generic/detail.py", line 100, in get
    return self.render_to_response(context)
AttributeError: 'ActivationView' object has no attribute 'render_to_response'

在我看来,它甚至不应该调用render_to_响应。有什么想法吗?

您继承自
BaseDeleteView
,它的状态不包括
TemplateResponseMixin
——即与呈现响应相关的所有位


继承自
DeleteView

如果您想省去确认页面,只需通过POST直接调用您的DeleteView即可。这是最理想的,因为对象的删除应该受到csrf的保护。

但是如果我从
DeleteView
继承,我必须在单独的页面中确认删除。我真的不想这样。我想要的是向URI发送一个
GET
请求,并执行删除。然后我重定向到另一个URI。
Traceback (most recent call last):
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 68, in __call__
    return self.application(environ, start_response)
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 272, in __call__
response = self.get_response(request)
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/core/handlers/base.py", line 169, in get_response
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/core/handlers/base.py", line 203, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/views/generic/base.py", line 47, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/views/generic/base.py", line 68, in dispatch
    return handler(request, *args, **kwargs)
  File "/home/crito/.pythonbrew/venvs/Python-2.7.2/thirty-web/lib/python2.7/site-packages/django/views/generic/detail.py", line 100, in get
    return self.render_to_response(context)
AttributeError: 'ActivationView' object has no attribute 'render_to_response'