-
對提供的
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提供Clientjson_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_extensionname屬性。例如:>>> 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
