2017-07-05 72 views
0

这是我在Django视图中用来接受post请求的函数,但它有时会返回None,对此问题有任何想法?为什么我的Django视图返回None作为HttpResponse?

def acceptpost(request): 
    try: 
     print "request.method:", request.method 
     print "content_type:", request.content_type 
     print "request.body:",request.body 
     time.sleep(0.1) 
    except Exception as e: 
     log.error(e) 
     return HttpResponse("error") 
    return HttpResponse("OK") 

我用于发布数据的功能是:

def post_data(url, data) 
    try: 
     req = requests.post(url=url, data=data, verify=False) 
     response = req.status_code 
     content = req.content 
    except RequestException as e: 
     response = e.response 
     log_debug.error("HttpResponse: %s" % response) 
     continue 

这个函数在While True, 网址为:URL = 'http://127.0.0.1:8000/acceptpost/'。

在大多数情况下,我可以得到正确的HttpResponse,在这种情况下“ok”,有时候我只能得到None,两个函数都在localhost上运行,Web服务器是Django Web服务器地址为http://127.0.0.1/acceptpost/。 我还没有捕获任何登录功能acceptpost,但偶尔有HttpResponse None,是否有任何关于这个问题的想法?

+0

你能显示你的帖子的完整代码吗?该网址的数据 – Exprator

+0

嗨,问题已被修改。 – buxizhizhoum

回答

1

您的代码本身似乎没有问题。你得到的None来自e.response,这里等于None。这可能意味着你的请求没有被发送,因此没有响应。

RequestException是一个覆盖几种例外的通用异常。我建议你看看this manual page(不知道它是否是最新的,但仍可以很好地了解你可以获得的许多例外情况)。鉴别代码中的大多数异常将帮助您调试它,我认为。

+0

谢谢,这是正确的,当有RequestException时,e.response在我的情况下是None,更多的细节信息可以通过e.message得到,另一种获取更多信息的简单方法是使用log.error(e)而不是log.error(e.response)。 – buxizhizhoum

相关问题