Python DRF, извлечение сериализованных данных в переменную - PullRequest
0 голосов
/ 12 февраля 2020

Я уже некоторое время использую python, и я хотел преобразовать настольный проект в API, используя Django rest framework.

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

Я пытаюсь получить данные от пользователя, запустить с ним какую-то логи c и вернуть страницу HTML (карта фолиума).

Я создал модель для получения соответствующих данных от пользователя.

from django.db import models


class PostGDT1AndUAV(models.Model):
    """
    POST user's GDT1 and UAV locations.
    """

    latitude_gdt = models.FloatField(name='LatitudeGDT1',
                                     unique=True, max_length=255, blank=False,
                                     help_text="Enter the location's Latitude, first when extracting from Google Maps.",
                                     default=1)
    longitude_gdt = models.FloatField(name='LongitudeOfGDT1',
                                      unique=True, max_length=255, blank=False,
                                      help_text="Enter the location's Longitude, second when extracting from Google "
                                                "Maps.",
                                      default=1)

    latitude_uav = models.FloatField(name='LatitudeOfUAV',
                                     unique=True, max_length=255, blank=False,
                                     help_text="Enter the location's Longitude, second when extracting from Google "
                                               "Maps.",
                                     default=1)
    longitude_uav = models.FloatField(name='LongitudeOfUAV',
                                      unique=True, max_length=255, blank=False,
                                      help_text="Enter the location's Longitude, second when extracting from Google "
                                                "Maps.",
                                      default=1)

И я написал сериализатор для данных:

Я просто не понимаю, как использовать сериализаторы Я понимаю их концепцию, используемую для преобразования данных в более удобный для чтения и использования формат, я просто не понимаю, как я получаю данные от пользователя, запускаю их через мой код и отправляю ответ и где в должен ли мой логический код (представления?)


from rest_framework import serializers
from .models import PostGDT1AndUAV


class PostGDT1AndUAVSerializer(serializers.ModelSerializer):
    class Meta:
        model = PostGDT1AndUAV
        fields = ('latitude_gdt', 'longitude_gdt', 'latitude_uav', 'longitude_uav')


gdt1_data = PostGDT1AndUAVSerializer(PostGDT1AndUAV).to_representation()
print(gdt1_data)


Я знаю, что это несколько вопросов и общих вопросов, но я отсканировал всю документацию и несколько учебных пособий, но до сих пор не нашел в этом пути.

1 Ответ

2 голосов
/ 12 февраля 2020

Вам необходимо предоставить экземпляр модели или итерацию экземпляров модели для сериализатора:

post_instance = PostGDT1AndUAV.objects.get(id=1)

# Returns {'latitude_gdt': ..., 'longitude_gdt': ..., 'latitude_uav': ..., 'longitude_uav': ...}
PostGDT1AndUAVSerializer(post_instance).data

post_instances = PostGDT1AndUAV.objects.filter(...)

# Returns [{'latitude_gdt': ... }, {'latitude_gdt': ... }, ... ]
PostGDT1AndUAVSerializer(post_instances, many=True).data

Ознакомьтесь с разделом сериализации учебника: https://www.django-rest-framework.org/tutorial/1-serialization/#working -с сериализаторами

Он отвечает на все ваши вопросы.

...