Извлечение конкретного поля данных из API Django Rest Framework - PullRequest
0 голосов
/ 31 мая 2018

Я недавно закончил учебное пособие по Django Rest Framework, и мне трудно понять, как именно он используется в качестве бэкенда для приложения, которое я планирую разработать (это мое первое предприятие в бэкэнд-разработке).Проще говоря, я не понимаю, как запрос будет работать с внешнего интерфейса.Навигация по API с помощью браузера или httpie имеет смысл, но я в растерянности из-за того, как веб-интерфейс извлекает указанные данные из модели.

Например, допустим, у меня есть следующее:

Модели

class Snippet(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=100, blank=True, default='')
    code = models.TextField()
    linenos = models.BooleanField(default=False)
    language = models.CharField(choices=LANGUAGE_CHOICES, default='python', max_length=100)
    style = models.CharField(choices=STYLE_CHOICES, default='friendly', max_length=100)
    highlighted = models.TextField()

Сериализаторы

class SnippetSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Snippet
        fields = ('id', 'title', 'code', 'linenos', 'language', 'style', 'url', 'highlight')

Просмотры

class SnippetViewSet(viewsets.ModelViewSet):
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer

Если я являюсь пользователем на другом конце приложения, как бы я мог запросить «язык» внутри модели сниппета?Как бы у меня был доступ к любой информации на «языке» и каким образом веб-интерфейсу нужно было бы взаимодействовать с моим API для получения этой информации?

Моя проблема не обязательно в том, как создать API,но как с этим взаимодействовать.Любая помощь приветствуется.

(Django 2.0, Python 3.5)

1 Ответ

0 голосов
/ 01 июня 2018

Хорошо, огромное спасибо курсу Удеми, опубликованному Марком Винтерботтомом для Django Rest Framework.Я оставлю это здесь для всех, кто борется с пониманием некоторых основных идей в Django Rest Framework.

Данные JSON извлекаются с помощью определения URL-адресов попаданий во внешнем интерфейсе, определенных вашим API.Таким образом, возникает вопрос: «Как мне реализовать некоторые функции поиска, которые находятся в URL?».

Django использует шаблон Модель, Представление, Контроллер.Модель - это то, что взаимодействует с базой данных, и позволяет вам извлекать данные из нее, не разбираясь в том, как выполнять запросы с использованием фактического кода SQL (для этого используется нечто, называемое объектно-реляционным отображением, или ORM, и ваши модели находятся в модели.пи файл).Контроллер, как вы взаимодействуете с извлеченными данными для создания / чтения / обновления / удаления вещей в вашем API-интерфейсе, сохраняется в views.py (немного интуитивно понятно, так как представление - это то, что вы должны иметь в папке шаблонов [HTML-страницы).и тому подобное]).

Вы можете реализовать что-то, называемое фильтрами, в своем контроллере (views.py), чтобы позволить вам выполнять поиск по определенной информации, чтобы получить этот ?search=whateveryouresearching URL, включая следующее:

from rest_framework import filters

и добавив его в свой ViewSet, который вы хотите искать:

filter_backends = (filters.SearchFilter,) #allows for search functionality
search_fields = ('name','email') #which can be any Field in your viewset

Этот ?search=whateveryouresearching, созданный фильтром, - это то, как какое-то интерфейсное устройство получит доступ к определенной искомой информации(например, определенный пользовательский ввод linke English или Mandarin внутри 'language').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...