是否有另一种方法可以在django中请求JSON REST API?

时间:2018-01-17 20:58:48

标签: python django rest django-rest-framework

我目前使用Django REST Framework有一个完全正常工作的Serializers。 我希望能够解析数据或请求可以在我的django应用程序中使用的数据。 我一直在使用

import requests
r = requests.get('django_api_url')
data = json.loads(r.text)

我使用它没有问题,但我想看看是否有更好/更快的方式。 编辑: 基本上寻找替换requests.get()

的东西

2 个答案:

答案 0 :(得分:1)

由于您正在尝试访问后端中的数据,因此只需导入模型并导入序列化程序然后根据需要使用它们,即可在干净的python文件中执行此操作。例如:

from api_app.models import Model1, Model2
from api_app.serializers import ModelSerializer1, ModelSerializer2

def get_model1_instance():
    m1 = Model1.get(pk=1)
    m1_data = ModelSerializer1(m1).data
    print(m1_data)

要理解的重要一点是,你不能只运行这个python文件。由于它使用的是django库和你的django项目代码,因此必须从django的上下文中运行。执行此操作的方法是使用命令python manage.py shell打开django shell,从文件中导入要运行的函数,然后调用函数。当您在django shell中导入并运行代码时,它会像在django应用程序中一样运行文件。例如:

$ python manage.py shell
> from access_api_data.py import get_model1_instance
> get_model1_instance()
...

如果要在实际的Web应用程序中调用您在后端的文件中编写的函数,可以将文件中的函数导入到视图中并调用它们,它们应该可以正常工作。

答案 1 :(得分:0)

尝试data = r.json()删除对json.loads(r.text)

的需求

请参阅response.json

的文档