簡體   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