繁体   English   中英

在同一项目中使用Django Rest Api

[英]Consuming Django Rest Api in the same project

我对django的rest框架还很陌生,我使用此处的官方教程构建了我的第一个示例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定义。 我想创建另一个应用程序以显示数据,例如所有学生的列表以及有关他们的详细信息等。

您将必须在使用方视图中命中端点,最简单的方法是使用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作为Python字典获取JSON响应。 如果您仅使用./manage.py runserver URL为:

http:localhost:8000/your-endpoint

要么

http://192.168.0.1:8000/your-endpoint

如果您完全在Django中工作,则使用API​​的这种方式有些多余。 在这些情况下,使用ORM通常会容易得多。 但是,如果您要使该API供外界使用(公开或通过API密钥),则此方法很有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM