python - Python — Curl有效,请求lib不起作用

原文 标签 python curl django-rest-framework python-requests pycurl

这可以从命令行进行:

 curl -H "Content-Type: application/json" -X POST -d '<my data>' http://my_user:my_pass@my_url


这不适用于python脚本:

 res=requests.post(
  'http://my_user:my_pass@my_url',  
  json='<my data>')


发生的情况是它命中了服务器,但未授权。 REST API是使用Django Rest Framework构建的,我得到了

{"detail":"Invalid username/password."}


http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/

密码包含以下特殊字符%(\

我逃脱了\,所以它是两个反斜杠。我也尝试在字符串前面加上r和4个反斜杠。

我也尝试使用auth=('my_user','my_pass')使用不同的转义符。

我通过http://curl.trillworks.com/运行了它,但仍然没有用。

明天我将把密码更改为简单的密码并进行测试。

如果这不起作用,我将放弃并在仅运行该curl命令的末尾添加一个bash脚本。

最佳答案

您需要尝试使用requests库设置身份验证,如下所示:

from requests.auth import HTTPBasicAuth

response = requests.post(url, json=payload, auth=HTTPBasicAuth('user', 'pass'))


http://docs.python-requests.org/en/master/user/authentication/#basic-authentication

相关文章:

python - 将数据加载到 Pandas

python - 寻找最小的公分母

linux - 使用bash脚本刷新浏览器

django - 如何在Django REST Framework中更改字段名称

python - Django MPTT使用DRF有效地序列化关系数据

python - 使用REST API上传图像

python - 您如何在不为每个类别建立分类器的情况下获得所有类别的预测概率?

python - 如何从SQL模型中为其连接的QListView选择行

list - 卷曲并并行获取100个URL

c++ - 我可以对不同的网址使用相同的卷曲句柄吗? (尝试从一个网址的多个页面下载数据)