【问题标题】:How to send a POST request using django?如何使用 django 发送 POST 请求?
【发布时间】:2011-07-15 13:11:54
【问题描述】:

我不想使用html 文件,但只有使用 django 我必须发出 POST 请求。

就像urllib2 发送get 请求一样。

【问题讨论】:

    标签: python django urllib2


    【解决方案1】:

    可以在 django 中使用 urllib2。毕竟,它仍然是python。要发送带有urllib2POST,可以发送data 参数(取自here):

    urllib2.urlopen(url[, data][, timeout])

    [..] 提供数据参数时,HTTP 请求将是 POST 而不是 GET

    【讨论】:

      【解决方案2】:

      在 Python 2 中,urllib2urllib 的方法的组合可以解决问题。以下是我使用两者发布数据的方式:

      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() 将参数转换为百分比编码的字符串。

      【讨论】:

        【解决方案3】:

        你现在唯一应该看的:

        https://requests.readthedocs.io/en/master/

        【讨论】:

        • 网址失效了,请在引用链接时分享一些示例。
        【解决方案4】:

        以下是使用python-requests 编写已接受答案示例的方法:

        post_data = {'name': 'Gladys'}
        response = requests.post('http://example.com', data=post_data)
        content = response.content
        

        更直观。有关更简单的示例,请参阅Quickstart

        【讨论】:

          【解决方案5】:

          注意,当你使用 ? 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

          【讨论】:

          • 如何导入请求?
          • @watata pip install requests 获取包,import requests 在你的程序中。
          猜你喜欢
          • 2018-10-29
          • 2018-07-20
          • 2020-10-28
          • 1970-01-01
          • 2011-08-04
          • 2019-07-08
          相关资源
          最近更新 更多