怎么可能请求.方法==Djang无

2024-04-25 23:14:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从https://github.com/miki725/Django-jQuery-File-Uploader-Integration-demo/issues/1找出与Django相关的问题

在什么情况下request.method == None可以在Django中?在


Tags: djangohttpsgithubcomnonedemorequest情况
2条回答

DR:request.method在实际使用中从来不是{},但对于您的特定情况,您看到的是错误的。在

通用HttpRequest

django/http/__init__.py

class HttpRequest(object):
    ...
    def __init__(self):
        ...
        self.method = None
        ...

当一个普通的HttpRequest被实例化时,它的方法是None。但是,WSGIRequest和{}永远不要调用HttpRequest.__init__。在

通过mod_wsgi请求

django/core/handlers/wsgi.py

^{pr2}$

总结一下,对于mod\wsgi,request.method永远不会是None。如果您以某种扭曲的方式设法得到environ['REQUEST_METHOD']未被定义或是{},那么请求将失败。在

通过mod_python请求

django/core/handlers/modpython.py

class ModPythonRequest(http.HttpRequest):
    ...
    def _get_method(self):
        return self.META['REQUEST_METHOD'].upper()
    ...
    method = property(_get_method)

WSGIRequest相同的注释适用。不可能是None。在

测试客户端

django.test.client.RequestFactory.request实例化一个WSGIRequest,并且每次调用时都使用REQUEST_METHOD在{}中定义为大写字符串。在


摘要:

assert request.method is not None

你找错地方了。在本例中,request.method == 'POST'。当^{时失败。这样做的原因是客户机没有在请求中发送Content-Type头(不要问我为什么,我不熟悉这些东西)。在

我能够通过AJAX实现这一点,特别是使用“POST”类型调用jQuery的$.AJAX函数(请参见http://api.jquery.com/jQuery.ajax/),但没有数据:

    $.ajax({
      type: "POST",
      url: "/something",
    });

相关问题 更多 >