-
對提供的
path
發出 POST 請求並返回Response
對象,如下所述。data
字典中的鍵值對用於提交 POST 數據。例如:>>> c = Client() >>> c.post('/login/', {'name': 'fred', 'passwd': 'secret'})
…將導致評估對此 URL 的 POST 請求:
/login/
…使用此 POST 數據:
name=fred&passwd=secret
如果您將
content_type
提供為application/json
,則如果data
是字典、列表或元組,則使用json.dumps()
DjangoJSONEncoder
Client
json_encoder
參數來覆蓋。此序列化也發生在put()
patch()
delete()
如果您提供任何其他
content_type
(例如,text/xml
用於 XML 有效負載),data
的內容將在 POST 請求中按原樣發送,使用 HTTPContent-Type
標頭中的content_type
。如果您沒有為
content_type
提供值,則data
中的值將以multipart/form-data
的內容類型傳輸。在這種情況下,data
中的鍵值對將被編碼為多部分消息並用於創建 POST 數據有效負載。要為給定鍵提交多個值 - 例如,指定
<select multiple>
的選擇 - 將值作為所需鍵的列表或元組提供。例如,這個data
的值將為名為choices
的字段提交三個選定的值:{'choices': ('a', 'b', 'd')}
提交文件是一種特殊情況。要發布文件,您隻需提供文件字段名稱作為鍵,並提供要上傳的文件的文件句柄作為值。例如:
>>> c = Client() >>> with open('wishlist.doc', 'rb') as fp: ... c.post('/customers/wishes/', {'name': 'fred', 'attachment': fp})
(此處的名稱
attachment
不相關;使用您的file-processing 代碼期望的任何名稱。)您還可以提供任何 file-like 對象(例如
StringIO
BytesIO
ImageField
validate_image_file_extension
name
屬性。例如:>>> from io import BytesIO >>> img = BytesIO(b'mybinarydata') >>> img.name = 'myimage.jpg'
請注意,如果您希望對多個
post()
調用使用相同的文件句柄,則需要手動重置帖子之間的文件指針。執行此操作的最簡單方法是在將文件提供給post()
後手動關閉文件,如上所示。您還應該確保以允許讀取數據的方式打開文件。如果您的文件包含圖像等二進製數據,這意味著您需要以
rb
(讀取二進製)模式打開文件。extra
參數的作用與Client.get()
如果您使用 POST 請求的 URL 包含編碼參數,則這些參數將在 request.GET 數據中可用。例如,如果您要提出請求:
>>> c.post('/login/?visitor=true', {'name': 'fred', 'passwd': 'secret'})
... 處理此請求的視圖可以詢問 request.POST 以檢索用戶名和密碼,並可以詢問 request.GET 以確定用戶是否是訪問者。
如果您將
follow
設置為True
,則客戶端將遵循任何重定向,並且將在包含中間url 和狀態代碼的元組的響應對象中設置redirect_chain
屬性。如果將
secure
設置為True
,客戶端將模擬 HTTPS 請求。
本文介紹 django.test.Client.post
的用法。
聲明
post(path, data=None, content_type=MULTIPART_CONTENT, follow=False, secure=False, **extra)
相關用法
- Python Django Client.get用法及代碼示例
- Python Django Client.login用法及代碼示例
- Python Django Client.session用法及代碼示例
- Python Django Client用法及代碼示例
- Python Tableau CSVRequestOptions用法及代碼示例
- Python Django ContentTypeManager用法及代碼示例
- Python Calendar itermonthdays2()用法及代碼示例
- Python Condition release()用法及代碼示例
- Python Collections.UserString用法及代碼示例
- Python Calendar monthdatescalendar()用法及代碼示例
- Python Condition notify()用法及代碼示例
- Python CSV轉JSON用法及代碼示例
- Python Django ContextMixin.get_context_data用法及代碼示例
- Python Django CustomUserManager.create_user用法及代碼示例
- Python Condition wait()用法及代碼示例
- Python Django Coalesce用法及代碼示例
- Python Calendar itermonthdates()用法及代碼示例
- Python Calendar iterweekdays()用法及代碼示例
- Python Django CustomUserManager.create_superuser用法及代碼示例
- Python Django Cot用法及代碼示例
- Python Calendar monthdayscalendar()用法及代碼示例
- Python Calendar itermonthdays3()用法及代碼示例
- Python Django Ceil用法及代碼示例
- Python Sympy Curve.translate()用法及代碼示例
- Python Collections.UserDict用法及代碼示例
注:本文由純淨天空篩選整理自djangoproject.com大神的英文原創作品 django.test.Client.post。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。