相关疑难解决方法(0)

Python请求POST进行GET?

我正在使用Python 2.7.5,Django 1.7,请求2.4.1,并进行一些简单的测试.但是,似乎当我调用requests.post时,该方法正在执行GET.

我的代码,与RESTful API交谈.请注意,POST命令通过Hurl.it与此有效负载和端点一起工作:

def add_dummy_objective(self):
    """
    To the bank
    """
    payload = {
        'displayName': {
            'text': self._test_objective
        },
        'description': {
            'text': 'For testing of API Middleman'
        },
        'genusTypeId': 'DEFAULT'
    }
    obj_url = self.host + self.bank_id + '/objectives/?proxyname=' + self._admin_key
    req = requests.post(obj_url, data=json.dumps(payload), headers=self.headers)
    return req.json()
Run Code Online (Sandbox Code Playgroud)

我将标题设置为json:

self.headers = {
    'Content-Type'  : 'application/json'
}
Run Code Online (Sandbox Code Playgroud)

我没有创建一个新目标(正如预期的那样使用POST),而是获得了目标列表(我对GET的期望).使用pdb,我看到:

(Pdb) req.request
<PreparedRequest [GET]>
(Pdb) req.request.method
'GET'
Run Code Online (Sandbox Code Playgroud)

这怎么翻了?我之前使用过Python请求库没有任何问题,所以我不确定我是否遗漏了一些明显的东西或者是否(使用较新版本的Django/Requests)我必须设置另一个参数?这是一个缓存问题吗?任何调试技巧?我已经尝试重新安装请求,并将Django回滚到1.6.5,但没有任何作用......必须简单. - 谢谢!

======更新1 ========

只需合并Martijn在此提出的一些调试信息:

(Pdb) requests.post.__name__
'post'
Run Code Online (Sandbox Code Playgroud)

进入requests/api.py> post()定义:

(Pdb) l
 88         :param data: …
Run Code Online (Sandbox Code Playgroud)

python django python-requests

11
推荐指数
2
解决办法
6328
查看次数

标签 统计

django ×1

python ×1

python-requests ×1