我在视图中附加了一个django表单。用户以这种形式键入查询,该查询将传递给Model.objects.get(query),如下所示:
def post(self, request):
try:
Model.objects.get(query)
except Model.DoesNotExist:
# something here
出现异常时,我想向我的模板发送一个ajax请求,以阻止其刷新,并向用户显示警告,指出数据库中没有与该请求匹配的内容。我会在视图和模板中放什么?
答案 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')
})