python-2.7 - 尝试使用 python 请求模块发出发布请求时出现 http 500 错误

标签 python-2.7 http python-requests

我有一个 python (python 2.7) 脚本,它使用请求模块向我在本地主机上运行的 Web 应用程序发布帖子。需要填写的表格有数据区和文件上传区。

import requests
root = "http://localhost/qatrack/"
test_list_url =root+"qa/utc/perform/17/day=next&next=/qatrack/qa/unit/7/"
s = requests.Session()
s.get(login_url)
token = s.cookies['csrftoken']
login_data = {
    'username':'user',
    'password':'pass',
    'csrfmiddlewaretoken': token
}
login_resp = s.post(login_url, data=login_data)
data1=open('C:/deploy/qatrackplus/python/imgs/test1.png','rb')
data2=open('C:/deploy/qatrackplus/python/imgs/test2.png','rb')
test_data = {
    'csrfmiddlewaretoken': token,
    "work_started":timestr,
    "work_completed":timestr,
    "status":"1",
    "form-TOTAL_FORMS":"4",
    "form-INITIAL_FORMS":"4",
    "form-MAX_NUM_FORMS":"1000",
    "form-0-value":"5"
}
f={
    "form-1-string_value":data1,
    "form-2-string_value":data2
}
resp = s.post(test_list_url, data=test_data, files=f)

响应给出了 500 错误代码,当我将输入放入 .html 文件时,它会说 Web 应用程序的一个脚本中存在属性错误。如果我为没有需要填写的文件上传的表单运行脚本,我不会得到这个。

最佳答案

我认为您的问题出在如何将 data1data2 传递给表单。您正在对图像文件调用 open(),但这本身并不会为您提供任何数据。它给你一个文件阅读器对象。要从中获取数据,您需要使用类似 read() 的方法从流中实际获取数据,以便将其传递。

关于python-2.7 - 尝试使用 python 请求模块发出发布请求时出现 http 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804739/

相关文章:

python - POST 无需重新加载整个网页

android - Buildozer 失败,我想我需要必备的 32 位库,但 Fedora 使用 yum,而不是 apt-get

apache - 没有尾随的 URL/获取附加的内部端口

javascript - 将表单的内容发布到 rest api

java - 如何找到 HttpURLConnection 尝试将我重定向到的位置?

python - 使用 pytest 的 mocker.patch.object 模拟 requests.Session()

python - SSLError : HTTPSConnectionPool(host ='www.quandl.com' , 端口=443):超过最大重试次数

python - 想改进简单的python代码

python - 从多处理中收集结果时确保正确的顺序

python - 在 Raspberry Pi 上使用 Python 连接到 wifi