gpt4 book ai didi

python - 在同一项目中使用 Django Rest Api

转载 作者:行者123 更新时间:2023-12-01 04:16:21 24 4
gpt4 key购买 nike

我对 django 的 Rest 框架还很陌生,我使用官方教程 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

序列化器.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 定义。我想创建另一个应用程序来显示数据,例如所有学生的列表以及有关他们的详细信息等。

最佳答案

您必须在消费 View 中访问端点,最简单的方法是使用 requests 库。首先安装库:

pip install requests

然后在您的消费 View 中使用它:

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 key ),那么这种方法就有意义。

关于python - 在同一项目中使用 Django Rest Api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34278355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com