Загрузите шаблон с Django и React JS с помощью одного вызова GET - PullRequest
0 голосов
/ 07 сентября 2018

Я создаю приложение с Django в качестве бэкэнда и React js для создания интерфейса приложения.

У меня есть набор сообщений, которые я хочу отображать.

В настоящее время я придерживаюсь подхода -

  1. Получить шаблон, с которым связан скомпилированный js-код.

  2. Затем снова позвоните, чтобы получить сообщения

Мой вопрос: в этом текущем подходе я делаю 2 GET обращений к бэкэнду, один для рендеринга шаблона, а затем снова для получения поста.

Каков наилучший способ достичь этого? Это обычный процесс создания приложений с использованием Django и React JS?

1 Ответ

0 голосов
/ 07 сентября 2018

Во-первых: я не вижу ничего плохого в том, чтобы сделать это в двух запросах, потому что один загружает само приложение, а второй загружает контент. Для меня это разделение имеет смысл и может оказаться полезным в будущем, если вы захотите повторно использовать, скажем, Конечную точку, которая выдает посты (т. Е. Контент).

Отвечая на ваш вопрос: если по какой-либо причине вы абсолютно хотите загрузить все с помощью одного GET, хорошим способом сделать это было бы передать список сообщений в контекст как сериализованный JSON-объект, а затем загрузите их в JS-контекст в Django-шаблоне.

т.е. в view.py:

from json import dumps

def view(request):
    context = {
        'posts':get_posts(),
    }
    render_to_response('django_template.html', context,
                              context_instance=RequestContext(request))
def get_posts():
    qs = Posts.objects.all()
    return dumps({'posts': qs })

в django_template:

    {% block content %}
    <div id="root"></div>
{% endblock %}

{% block javascript %}
    <script>
        var INITIAL_POSTS = {{ posts|safe }};
    </script>
    <script type="text/javascript"
            src="PATH_TO_STATIC_REACT_ASSET.JS"></script>
{% endblock %}

теперь вы должны размещать свои сообщения в JS-контексте и загружать их в свой компонент React. Еще раз: я бы согласился с комментарием Даниэля Роземана

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