2015-12-14 3 views
1

Я довольно новичок в структуре отдыха django, и я построил свой первый пример api, используя официальный учебник here. Но я понятия не имею, как использовать данные 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

Вам просто нужно использовать URL-адрес, если вы не видите код или какую-то конкретную проблему, мы не можем вам помочь – 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 ваш URL будет:

http:localhost:8000/your-endpoint 

или

http://192.168.0.1:8000/your-endpoint 

Этот способ потребляющих API несколько излишним, если вы полностью работает в Django. В этих случаях часто намного проще использовать ORM. Однако, если вы делаете API доступным для внешнего использования (либо публично, либо через ключи API), то этот подход имеет смысл.

Смежные вопросы