Skip to main content
 首页 » 编程设计

python之Django 应用程序中 API 调用的问题

2024年10月01日29think

我正在 Django 应用程序中进行简单的 API 调用,但我遇到了一些问题

这是ajax调用:

$.ajax({ 
    type: "GET", 
    url: "/query/", 
    success: function (data) { 
        alert(data); 
    } 
}); 

这是调用 API 的函数:

def query(request): 
    response = requests.get("http://api.open-notify.org/iss-now.json") 
    return JsonResponse(response.status_code, safe=False) 

这只会在每隔一次被触发时起作用,一次失败然后一次成功。失败时没有捕获异常。以下是失败后输出窗口中显示的内容。

The thread 0x2008 has exited with code 0 (0x0). 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 138, in run 
self.finish_response() 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 180, in  
finish_response 
self.write(data) 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 274, in write 
self.send_headers() 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 332, in  
send_headers 
self.send_preamble() 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 255, in  
send_preamble 
('Date: %s\r\n' % format_date_time(time.time())).encode('iso-8859-1') 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 453, in  
_write 
result = self.stdout.write(data) 
File "C:\Program Files\Python36\lib\socketserver.py", line 775, in write 
self._sock.sendall(b) 
ConnectionAbortedError: [WinError 10053] An established connection was  
aborted by the software in your host machine 
[27/Jul/2017 13:56:15] "GET /query/ HTTP/1.1" 500 59 
 
Exception happened during processing of request from ('127.0.0.1', 56126) 
Traceback (most recent call last): 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 138, in run 
self.finish_response() 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 180, in  
finish_response 
self.write(data) 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 274, in write 
self.send_headers() 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 332, in  
send_headers 
self.send_preamble() 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 255, in  
send_preamble 
('Date: %s\r\n' % format_date_time(time.time())).encode('iso-8859-1') 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 453, in  
_write 
result = self.stdout.write(data) 
File "C:\Program Files\Python36\lib\socketserver.py", line 775, in write 
self._sock.sendall(b) 
ConnectionAbortedError: [WinError 10053] An established connection was  
aborted by the software in your host machine 
 
During handling of the above exception, another exception occurred: 
 
Traceback (most recent call last): 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 141, in run 
self.handle_error() 
File "D:\Dropbox\Django Projects\DjangoMOA\environment\lib\site- 
packages\django\core\servers\basehttp.py", line 88, in handle_error 
super(ServerHandler, self).handle_error() 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 368, in  
handle_error 
self.finish_response() 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 180, in  
finish_response 
self.write(data) 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 274, in write 
self.send_headers() 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 331, in  
send_headers 
if not self.origin_server or self.client_is_modern(): 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 344, in  
client_is_modern 
return self.environ['SERVER_PROTOCOL'].upper() != 'HTTP/0.9' 
TypeError: 'NoneType' object is not subscriptable 
 
During handling of the above exception, another exception occurred: 
 
Traceback (most recent call last): 
File "C:\Program Files\Python36\lib\socketserver.py", line 639, in  
process_request_thread 
self.finish_request(request, client_address) 
File "C:\Program Files\Python36\lib\socketserver.py", line 361, in  
finish_request 
self.RequestHandlerClass(request, client_address, self) 
File "C:\Program Files\Python36\lib\socketserver.py", line 696, in __init__ 
self.handle() 
File "D:\Dropbox\Django Projects\DjangoMOA\environment\lib\site- 
packages\django\core\servers\basehttp.py", line 155, in handle 
handler.run(self.server.get_app()) 
File "C:\Program Files\Python36\lib\wsgiref\handlers.py", line 144, in run 
self.close() 
File "C:\Program Files\Python36\lib\wsgiref\simple_server.py", line 35, in  
close 
self.status.split(' ',1)[0], self.bytes_sent 
AttributeError: 'NoneType' object has no attribute 'split' 
 
The thread 0x420 has exited with code 0 (0x0). 

我已经在 postman 中测试了 URL,每次都收到了回复,没有任何问题。

如有任何建议或想法,我们将不胜感激。

请您参考如下方法:

设法弄清楚它的底部。看起来页面正在重新加载并导致“ConnectionAbortedError”。

我的调用嵌套在一个 .submit 函数中,它需要一个

event.preventDefault(); 

待补充。完整的工作代码现在看起来像这样。

$("#form").submit( 
    function () { 
        $.ajax({ 
            type: "GET", 
            url: "/query/", 
            success: function (data) { 
                alert(data); 
            } 
        }); 
        event.preventDefault(); 
    } 
 
); 

希望这对其他人有帮助:)