我正在尝试发送删除查询,但它无法正常工作。这是view.py部分:
def remove_sveti(request):
if not request.is_ajax():
raise Http404
sveti = Sveti.objects.all()
if sveti.pk == request.GET['pk']:
sveti.remove()
return HttpResponse('{"success":true}')
这是我的models.py:
class Sveti(models.Model):
name = models.CharField(max_length = 50, default = 'sveti')
position = models.IntegerField()
浏览器控制台中的是500错误,并在编辑器控制台中写入:
File "D:\workspace\trello_env\lib\site-packages\django\core\handlers\base.py", line 132, in get_response
raise ValueError("The view %s.%s didn't return an HttpResponse object." % (callback.__module__, view_name))
ValueError: The view trello.views.remove_sveti didn't return an HttpResponse object.
[05/Mar/2014 16:15:17] "GET /index/remove_sveti?pk=1 HTTP/1.1" 500 9676
我使用sqlite作为数据库。
答案 0 :(得分:1)
当if sveti.pk == request.GET['pk']:
为False时,您不会显式返回任何内容,而视图会返回None
。
要删除记录,您需要使用Model.delete()
method
if sveti.pk == request.GET['pk']:
sveti.delete()
return HttpResponse('{"success":true}')
return HttpResponse('{"success":false}')
可以解决这两个错误,或者返回404响应(未找到)。
但是,我没有看到你实际上在视图中查询正确的Sveti
对象,也许你打算在这里使用get_object_or_404()
function:
def remove_sveti(request):
if not request.is_ajax():
raise Http404
sveti = get_object_or_404(Sveti, pk=request.GET['pk'])
sveti.delete()
return HttpResponse('{"success":true}')
如果该主键的对象不存在,get_object_or_404()
函数将引发Http404
响应。