2015-12-14 60 views
1

我对django的rest框架非常陌生,我使用官方教程here构建了我的第一个示例api。但我不知道如何将这个api的数据用于同一个项目中的另一个应用程序,例如它可以将数据呈现为HTML。在同一个项目中使用Django Rest Api

假设我为学生(及其详细信息)在学校创建了一个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 definiton。我想创建一个应用来显示数据的所有学生和细节的清单等对他们等

+1

你只需要使用网址,如果你不显示代码,或者一个特定的问题,我们不能帮你 – Gocht

+0

请检查现在。 – WutWut

回答

1

你将不得不打你的终点在你的消费来看,要做到这一点最简单的方法是用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()获得JSON响应形成你的API的Python字典。如果你只是用./manage.py runserver您的网址是:

http:localhost:8000/your-endpoint 

http://192.168.0.1:8000/your-endpoint 

消耗的API的这种方式是有些多余,如果你的Django内完全工作。在这些情况下使用ORM通常要容易得多。但是,如果您要将API用于外部使用(公开或通过API密钥),那么这种方法是有道理的。

相关问题