为什么我的Django视图返回None作为HttpResponse?

时间:2017-07-05 07:28:38

标签: python django

这是我在Django视图中用来接受post请求的函数,但是有时会返回None,对这个问题有任何想法吗?

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,是否有任何关于此问题的想法?

1 个答案:

答案 0 :(得分:1)

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

RequestException是涵盖多种异常的一般异常。我建议您看this manual page (不确定它是否是最新的,但仍然可以很好地了解您可以获得的许多例外情况)。区分代码中的大多数异常将帮助您调试它。