Python 为什么BaseDeleteView抛出一个属性错误,说对象没有属性render\u to\u响应?
我正在尝试实现BaseDeleteview,但获取此错误消息->“DeletePostView”对象没有“render_to_response”属性,我没有使用DeleteView,主要是因为它需要一个确认模板,我使用bootraps的模式(如弹出窗口)进行确认 我在这里发现了很多类似的问题-> 回溯错误: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
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)