我不想使用html
文件,但只有django我必须发出POST请求。
就像urllib2
发送get
请求一样。
答案 0 :(得分:31)
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()将参数转换为百分比编码的字符串。
答案 1 :(得分:30)
以下是您如何使用python-requests
撰写接受的答案的示例:
post_data = {'name': 'Gladys'}
response = requests.post('http://example.com', data=post_data)
content = response.content
更直观。有关更简单的示例,请参阅Quickstart。
答案 2 :(得分:6)
你现在唯一应该看的是:
答案 3 :(得分:4)
你可以在django中使用urllib2
。毕竟,它仍然是python。要使用POST
发送urllib2
,您可以发送data
参数(取自here):
urllib2.urlopen(url [,data] [,timeout])
[..]当提供数据参数时,HTTP请求将是POST而不是GET
答案 4 :(得分:0)
请注意,当您使用requests
时,并发出POST
请求,将字典通过data
参数传递,如下所示:
payload = {'param1':1, 'param2':2}
r = request.post('https://domain.tld', data=payload)
您正在传递参数form-encoded
。
如果要仅使用JSON(服务器-服务器集成中最流行的类型)发送POST
请求,则需要在str()
参数中提供data
。如果是JSON,则需要import json
lib并进行如下修改:
payload = {'param1':1, 'param2':2}
r = request.post('https://domain.tld', data=json.dumps(payload))`
文档is here