You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中获取URL的JSON并展示VK API返回结果?

在Django中处理外部API并展示JSON结果

我来帮你搞定这两个问题,对照你熟悉的PHP逻辑,一步步实现:

一、在Django REST Framework中获取URL对应的JSON

首先,Python里我们常用requests库来发送HTTP请求(比标准库的urllib更简洁),先安装它:

pip install requests

接着在你的Django app里创建一个API视图,用DRF的APIView来实现:

# views.py
from rest_framework.views import APIView
from rest_framework.response import Response
import requests

class ExternalJsonAPI(APIView):
    def get(self, request):
        # 替换成你要获取的目标API URL
        target_api_url = "https://example.com/api/data.json"
        try:
            # 发送GET请求并解析JSON
            api_response = requests.get(target_api_url)
            api_response.raise_for_status()  # 捕获4xx/5xx的HTTP错误
            json_result = api_response.json()
            return Response(json_result)
        except requests.exceptions.RequestException as e:
            # 请求出错时返回错误信息
            return Response({"error": str(e)}, status=500)

然后在urls.py里配置这个API的路由:

# urls.py
from django.urls import path
from .views import ExternalJsonAPI

urlpatterns = [
    path('api/get-external-json/', ExternalJsonAPI.as_view(), name='get-external-json'),
]

访问这个路由就能拿到目标URL返回的JSON数据了。

二、在Django界面展示VK API的JSON结果(和PHP效果一致)

你的PHP代码逻辑是「获取API内容→解析JSON→用<pre>格式化输出」,在Django里我们分视图和模板两层来实现:

1. 编写视图函数

同样先确保requests已安装,然后在views.py里写:

# views.py
from django.shortcuts import render
import requests

def show_vk_friends(request):
    vk_api_url = "https://api.vk.com/method/friends.get?user_id=2183659&count=10&fields=nickname,photo_100"
    friends_data = {}
    try:
        # 调用VK API
        api_response = requests.get(vk_api_url)
        api_response.raise_for_status()
        json_data = api_response.json()
        # 和你的PHP代码对应,提取response部分
        friends_data = json_data.get('response', {})
    except requests.exceptions.RequestException as e:
        # 请求出错时返回错误信息
        friends_data = {"error": f"请求VK API失败:{str(e)}"}
    
    # 把数据传递给模板
    return render(request, 'vk_friends.html', {'friends_data': friends_data})

2. 创建模板文件

在你的app的templates文件夹下新建vk_friends.html,用<pre>标签配合Django的pprint过滤器来实现格式化输出,效果和PHP的print_r一样:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>VK Friends List</title>
</head>
<body>
    <h2>VK Friends Data</h2>
    <!-- pprint过滤器会自动格式化字典/列表,生成缩进清晰的结构 -->
    <pre>{{ friends_data|pprint }}</pre>
</body>
</html>

3. 配置路由

在urls.py里添加这个页面的路由:

# urls.py
from django.urls import path
from .views import show_vk_friends

urlpatterns = [
    path('vk-friends/', show_vk_friends, name='show_vk_friends'),
]

现在访问/vk-friends/,就能看到和你PHP代码输出一模一样的格式化JSON结果了。

小提示

  • 如果VK API请求比较慢,可以考虑用Django的异步视图(Django 3.1+支持)来优化,或者把API数据缓存起来,避免每次请求都调用外部接口。
  • 可以根据VK API的返回规范,对error字段做更细致的处理,比如展示具体的错误码和原因。

内容的提问来源于stack exchange,提问作者Даниил

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:37:43