Django: лучшие практики использования данных модели на стороне клиента javascript - PullRequest
0 голосов
/ 29 марта 2020

Я новичок в работе с django и пытаюсь отправить информацию своей клиентской стороне javascript. У меня есть список FooBarModels, которые я хочу использовать со своей клиентской Javascript. В настоящее время я использую шаблон django для создания массива словарей, который содержит информацию, которую я буду использовать с Javascript.

. Это похоже на хакерское решение, есть ли лучший способ добиться этого?


models.py

class FooBarModel(models.Model):
    bar = models.ForeignKey(Bar, on_delete=models.CASCADE)

    @property
    def desc(self):
        # logic here

    @property
    def display_name(self):
        # logic here

шаблон. html

<script>
var $fb_list = [
    {% for fb in foobar_list %}
    { "name": {{fb.display_name}}, "desc": {{fb.display_name}} },
    {% endfor %}
]

// a bunch of code that uses the $fb_list
</script>

Какова наилучшая практика для обработки этот тип ситуации? Должен ли я отправлять пакет JSON клиентской стороне и анализировать его?

1 Ответ

0 голосов
/ 29 марта 2020

Это называется Serialization, что означает преобразование django django.db.Model в JSON, обратное этому называется Deserialization, что означает преобразование JSON в собственный объект, на этот раз -if это действительный объект -.

Django поддерживает это изначально, а DRF расширяет эту поддержку.

Вот пример с django сам по себе.

from django.core import serializers

data = serializers.serialize("json", SomeModel.objects.all()) # xml is supported too
print(data) # prints model as JSON

или

JSONSerializer = serializers.get_serializer("json")
json_serializer = JSONSerializer()
json_serializer.serialize(queryset)
data = json_serializer.getvalue()
print(data)

Требуется набор запросов ДАЖЕ, если вы сериализуете один объект.

...