【问题标题】:Using 'requests' library in Python Django 3.0.6在 Python Django 3.0.6 中使用“请求”库
【发布时间】:2020-05-11 08:58:32
【问题描述】:

我正在尝试使用 Django 表单获取一些数据,这些数据实际上是一个 URL,如下所示:

def sample(request):
    if request.method == 'POST':
        form = sampleForm(request.POST)
        if form.is_valid():
            RDS = form.cleaned_data['RDS']
            print(RDS)       
    form = sampleForm()
    return render(request, 'form.html', {'form': form})

网址在 RDS 变量中。现在我想使用这个 url 使用 Python 的 Requests 库发出 GET 请求。 我尝试在上面的代码之后添加这些行:

node_data = requests.get(RDS)    
print(node_data.content)

但它似乎不起作用。有人可以帮忙吗?

【问题讨论】:

  • 您的第二个 sn-p 似乎缺少某些东西(get 未执行)
  • 对不起,我更正了。
  • RDS 变量是否包含协议部分? (http/https) node_data.content 到底是什么?
  • 是的,它包含协议部分。类似于:http://123.123.123.123:3211/x-nmos/query/v1.1/nodes 此时node_data.content 不显示任何内容,但它应该包含 JSON 数据。
  • 您回复的状态码是什么? (node_data.status_code)

标签: django python-requests python-3.6


【解决方案1】:

来自请求库documentation

如果RDS包含一个url(包括协议),可以如下请求:

response = requests.get(RDS)

# print result
print(response.status_code)
print(reponse.json())

不要害怕阅读文档!在这种情况下,索引页包含您想知道的内容。

PS:确保代码被执行

【讨论】:

  • 代码执行是问题之一。谢谢你指路。
【解决方案2】:

我解决了。感谢大家的帮助。

def sample(request):
    if request.method == 'POST':
        form = sampleForm(request.POST)
        if form.is_valid():
            RDS = form.cleaned_data['RDS']
            print(RDS)
            response = requests.get(RDS)
            print(response.status_code)
            print(response.content)
    form = sampleForm()
    return render(request, 'form.html', {'form': form})

回复:

http://123.123.123.123:3211/x-nmos/query/v1.1/nodes
200
{"JSON": "Data"}

【讨论】:

    猜你喜欢
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2015-09-10
    • 2016-08-27
    相关资源
    最近更新 更多