需要一些帮助在python中发送查询

时间:2014-03-05 12:22:05

标签: python django sqlite

我正在尝试发送删除查询,但它无法正常工作。这是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作为数据库。

1 个答案:

答案 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响应。