表单POST上的DidsNotExist异常后,同一页面上的Django ajax警告

时间:2018-07-20 16:04:12

标签: ajax django post

我在视图中附加了一个django表单。用户以这种形式键入查询,该查询将传递给Model.objects.get(query),如下所示:

   def post(self, request):
     try:
       Model.objects.get(query)
     except Model.DoesNotExist:
       # something here

出现异常时,我想向我的模板发送一个ajax请求,以阻止其刷新,并向用户显示警告,指出数据库中没有与该请求匹配的内容。我会在视图和模板中放什么?

1 个答案:

答案 0 :(得分:0)

http标准响应将是404响应。 Django为此提供了一个快捷功能:get_object_or_404

def post(self, request):
    my_object = get_object_or_404(Model, query)

如果查找失败,则django将引发404错误,这将导致404 http响应返回给客户端。在您的javascript ajax处理代码中,您应该检查http状态,并适当处理所有404响应。

例如,如果您使用的是fetch api,则代码可能看起来像这样。

fetch('/some/url/?query=foobar').then(response => { 
  if (response.ok) return response.json()
  if (response.status == 404) throw new Error('404')
})