我对django的休息框架很陌生,我使用官方教程here构建了我的第一个示例api。但是我不知道如何将这个api的数据用于同一项目中的另一个应用程序,这样它的数据就可以呈现为HTML。
假设我在学校为学生(及其详细信息)创建了一个API students
。现在,我如何在同一个项目中使用此api来显示学校的学生人数及其详细信息。
大多数在线教程或解释都是针对第三方API的,我无法弄清楚如何继续。提前致谢。
models.py
class Test(models.Model):
date = models.DateTimeField(auto_now_add=True)
test_name = models.CharField(max_length=200,default='simple blood test',blank=False)
subject = models.CharField(max_length=100,default='')
def __str__(self):
return self.test_name
class Person(models.Model):
tests = models.ManyToManyField(Test)
title = models.CharField(max_length=3,default="mr",blank=False)
name = models.CharField(max_length=50,default='',blank=False)
def __str__(self):
return self.name
views.py
class PersonList(generics.ListCreateAPIView):
queryset = Person.objects.all()
serializer_class = PersonSerializer
def perform_create(self, serializer):
serializer.save(owner=self.request.user)
class PersonDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Person.objects.all()
serializer_class = PersonSerializer
serializers.py
class TestSerializer(serializers.ModelSerializer):
class Meta:
model = Test
fields = ('test_name','subject')
class PersonSerializer(serializers.HyperlinkedModelSerializer):
owner = serializers.ReadOnlyField(source='owner.username')
tests = TestSerializer(many=True, read_only=True)
class Meta:
model = Person
fields = ('url','id','name')
这是我的API定义。我想创建另一个应用程序来显示数据,如所有学生的列表和有关它们的详细信息等。
答案 0 :(得分:2)
您必须在消费视图中点击您的终端,最简单的方法是使用requests
库。首先安装库:
pip install requests
然后在您的消费视图中使用它:
def consumer_view(request):
response = requests.get('http://your-url.com/your-endpoint')
# do what you need to do here
您可以使用response.json()
从您的API获取JSON响应作为Python字典。如果您只是使用./manage.py runserver
,则您的网址将为:
http:localhost:8000/your-endpoint
或
http://192.168.0.1:8000/your-endpoint
如果你在Django中完全工作,这种使用API的方式有点多余。在这些情况下使用ORM通常要容易得多。但是,如果您要使API可供外部使用(公开或通过API密钥),那么这种方法是有道理的。