【发布时间】:2011-07-15 13:11:54
【问题描述】:
我不想使用html 文件,但只有使用 django 我必须发出 POST 请求。
就像urllib2 发送get 请求一样。
【问题讨论】:
我不想使用html 文件,但只有使用 django 我必须发出 POST 请求。
就像urllib2 发送get 请求一样。
【问题讨论】:
您可以在 django 中使用 urllib2。毕竟,它仍然是python。要发送带有urllib2 的POST,可以发送data 参数(取自here):
urllib2.urlopen(url[, data][, timeout])
[..] 提供数据参数时,HTTP 请求将是 POST 而不是 GET
【讨论】:
在 Python 2 中,urllib2 和 urllib 的方法的组合可以解决问题。以下是我使用两者发布数据的方式:
post_data = [('name','Gladys'),] # a sequence of two element tuples
result = urllib2.urlopen('http://example.com', urllib.urlencode(post_data))
content = result.read()
urlopen() 是一种用于打开网址的方法。 urlencode() 将参数转换为百分比编码的字符串。
【讨论】:
你现在唯一应该看的:
【讨论】:
以下是使用python-requests 编写已接受答案示例的方法:
post_data = {'name': 'Gladys'}
response = requests.post('http://example.com', data=post_data)
content = response.content
更直观。有关更简单的示例,请参阅Quickstart。
【讨论】:
注意,当你使用 ? requests 时,让 POST 请求在 data 参数中传递你的字典,如下所示:
payload = {'param1':1, 'param2':2}
r = request.post('https://domain.tld', data=payload)
您正在传递参数form-encoded。
如果您想仅使用 JSON(服务器-服务器集成中最流行的类型)发送 POST 请求,您需要在 data 参数中提供 str()。如果使用 JSON,您需要 import json lib 并像这样:
payload = {'param1':1, 'param2':2}
r = request.post('https://domain.tld', data=json.dumps(payload))`
文档is here
【讨论】:
pip install requests 获取包,import requests 在你的程序中。