![](/img/trans.png)
[英]What is the difference between HTTP Post URL with /post and without using Python requests module?
[英]http 500 error when attempting to make a post request with python requests module
我有一個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()
類的東西來從流中實際獲取數據,以便繼續傳遞。
作為對此的更新,我已經找到了解決方案。 它正在尋找文件名,但是基於Web應用程序的上傳機制,它正在文件夾C:/ deploy /.../ media / uploads / tmp /中尋找文件名。 保存要上傳到那里的文件后,在發布請求中刪除files = f參數,並提交test_data表單為:
test_data = {
'csrfmiddlewaretoken': token,
"work_started":timestr,
"work_completed":timestr,
"status":"1",
"form-TOTAL_FORMS":"3",
"form-INITIAL_FORMS":"3",
"form-MAX_NUM_FORMS":"1000",
"form-0-value":"5"
"form-1-string_value":test1.png #saved in C:/deploy/.../media/uploads/tmp/
"form-2-string_value":test2.png
}
resp = s.post(test_list_url, data=test_data)
根據需要上傳文件。 感謝您的所有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.