我编写了一个AJAX函数,它向我的服务器发送POST请求(运行Django 1.9)。
请求应触发服务器上的进程 - 客户端无需执行任何操作。因此,我没有在我的观点的post方法中添加return
。
但是,在我的服务器的输出中,我发现了一些关于它的错误消息:
Internal Server Error: <url>
Traceback (most recent call last):
File "/.../python3.5/site-packages/django/core/handlers/base.py", line 158, in get_response
% (callback.__module__, view_name))
ValueError: The view <view> didn't return an HttpResponse object. It returned None instead.
ERROR:django.request:Internal Server Error: <url>
Traceback (most recent call last):
File "/.../python3.5/site-packages/django/core/handlers/base.py", line 158, in get_response
% (callback.__module__, view_name))
ValueError: The view <view> didn't return an HttpResponse object. It returned None instead.
[01/Feb/2016 00:30:28] "POST <url> HTTP/1.1" 500 14165
因此我添加了
return HttpResponse('')
到方法。
然而,这似乎对我来说有点过时了。
答案 0 :(得分:2)
在向服务器发送请求后,您所做的是处理客户端“不需要任何内容”的正确方法。
但是,您通常希望为客户端提供某种成功的消息/操作,无论多么简单,只是为了使用户友好。当用户按下按钮时,它可能会让用户感到困惑,而且看起来没有任何反应。在同样的注意事项中,当出现问题时,应该给出错误信息,这样他们可以告诉某些事情是错误的(因此告诉你)比没有发生任何事情要快得多。
答案 1 :(得分:2)
没有必要向任何请求发送任何回复。你可以关闭连接,但是......
您可以发送的最小响应是:
HTTP/1.1 204 No content
请注意,在一行之后应该有一个空行(但是markdown赢了,让我在代码块的末尾输入空行)。你可以使用以下方式在django中发送:
return HttpResponse(status=204)
但是django会抛出一些标题。你可以摆脱它们,但它毫无意义......