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