Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么BaseDeleteView抛出一个属性错误,说对象没有属性render\u to\u响应?_Python_Django_Django Rest Framework_Django Views - Fatal编程技术网

Python 为什么BaseDeleteView抛出一个属性错误,说对象没有属性render\u to\u响应?

Python 为什么BaseDeleteView抛出一个属性错误,说对象没有属性render\u to\u响应?,python,django,django-rest-framework,django-views,Python,Django,Django Rest Framework,Django Views,我正在尝试实现BaseDeleteview,但获取此错误消息->“DeletePostView”对象没有“render_to_response”属性,我没有使用DeleteView,主要是因为它需要一个确认模板,我使用bootraps的模式(如弹出窗口)进行确认 我在这里发现了很多类似的问题-> 回溯错误: Traceback (most recent call last): File "/home/gaurav/Programming_Practice/DjangoProject

我正在尝试实现BaseDeleteview,但获取此错误消息->“DeletePostView”对象没有“render_to_response”属性,我没有使用DeleteView,主要是因为它需要一个确认模板,我使用bootraps的模式(如弹出窗口)进行确认

我在这里发现了很多类似的问题->

回溯错误:

Traceback (most recent call last):
  File "/home/gaurav/Programming_Practice/DjangoProjects/Blog/blog-project/venv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/gaurav/Programming_Practice/DjangoProjects/Blog/blog-project/venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/gaurav/Programming_Practice/DjangoProjects/Blog/blog-project/venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/gaurav/Programming_Practice/DjangoProjects/Blog/blog-project/venv/lib/python3.8/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/gaurav/Programming_Practice/DjangoProjects/Blog/blog-project/venv/lib/python3.8/site-packages/django/utils/decorators.py", line 43, in _wrapper
    return bound_method(*args, **kwargs)
  File "/home/gaurav/Programming_Practice/DjangoProjects/Blog/blog-project/venv/lib/python3.8/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/home/gaurav/Programming_Practice/DjangoProjects/Blog/blog-project/venv/lib/python3.8/site-packages/django/views/generic/base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "/home/gaurav/Programming_Practice/DjangoProjects/Blog/blog-project/venv/lib/python3.8/site-packages/django/views/generic/detail.py", line 108, in get
    return self.render_to_response(context)
 
Exception Type: AttributeError at /post/2020/10/10/wertyuio/remove
Exception Value: 'DeletePostView' object has no attribute 'render_to_response'

因为
BaseDeleteView
有一个
get
方法,它的主体中会调用另一个名为
self.render\u to\u response(context)
的方法。此方法将来自名为
TemplateResponseMixin
的内置mixin,由于您使用了
BaseDeleteView
,因此此方法不存在,它将引发错误。因此,您应该覆盖以下视图的
get
方法:

def get(self, request, *args, **kwargs):
    self.object = self.get_object()
    context = self.get_context_data(object=self.object)
    return self.render_to_response(context)
类似于此或您需要的任何类型:

from django.shortcuts import render

# override get method of your DeletePostView
def get(self, request, *args, **kwargs):
    self.object = self.get_object()
    context = self.get_context_data(object=self.object)
    return render(request, 'your_template.html', context=context)

或者,您可以在
DeletePostView
父视图中添加
SingleObjectTemplateResponseMixin
(即来自django.views.generic import SingleObjectTemplateResponseMixin)以将此功能添加到视图中,并覆盖任何自定义它的方法(与
DeleteView
相同).

您是否发布或获取删除端点?这是一个get请求@iriYes,您是对的,但我的目标是避免最终被调用的确认模板,无论我使用哪种方法。所以,使用了某种技巧来避免模板。基本上,在模板中,我创建了一个表单,其属性仅为button,并使用POST请求调用DeletePostView。这解决了我的问题。另外,我从DeleteView继承了DeletePostView。
from django.shortcuts import render

# override get method of your DeletePostView
def get(self, request, *args, **kwargs):
    self.object = self.get_object()
    context = self.get_context_data(object=self.object)
    return render(request, 'your_template.html', context=context)