我正在尝试创建一个页面,我可以使用基于类的视图删除文章。有一个问题,我收到的错误是:
.css
这是代码:
views.py
base_menu.html
template.html
id() takes exactly one argument (0 given)
urls.py
class DeleteView(View):
def post(self, request, *args, **kwargs):
article = get_object_or_404(Article, id=id)
article.delete()
return HttpResponseRedirect('/')
def get(self, request, *args, **kwargs):
article = Article.objects.get(id=kwargs['id'])
context = {"article": article}
return render_to_response("delete.html", context, context_instance=RequestContext(request))
故障可能是:视图:第3行 | 模板:第2行
我遗失了一些东西,但我无法弄清楚。我怎样才能解决这个问题?
答案 0 :(得分:3)
您需要传递模型类,以便函数知道它试图获取的对象类型。
article = get_object_or_404(Article, id=request.POST.get('article_id', ''))
答案 1 :(得分:2)
问题在于post
DeleteView
id
方法,您传递id
这是一个python built-in function,而您需要获取kwargs
来自class DeleteView(View):
def post(self, request, *args, **kwargs):
article = get_object_or_404(Article, id=id) # <--------
:
问题:
class DeleteView(View):
def post(self, request, *args, **kwargs):
article = get_object_or_404(Article, id=kwargs['id']) # <--------
解决方案:
.draw
答案 2 :(得分:1)
在post()
中,您没有传递id
kwarg,但您正在传递内置函数id
。您需要使用kwargs['id']
,而不是get()
。