-
对提供的
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。