我有一个 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 应用程序的一个脚本中存在属性错误。如果我为没有需要填写的文件上传的表单运行脚本,我不会得到这个。
最佳答案
我认为您的问题出在如何将 data1
和 data2
传递给表单。您正在对图像文件调用 open()
,但这本身并不会为您提供任何数据。它给你一个文件阅读器对象。要从中获取数据,您需要使用类似 read()
的方法从流中实际获取数据,以便将其传递。
关于python-2.7 - 尝试使用 python 请求模块发出发布请求时出现 http 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804739/