@MaintstDev
Python | Vue

React + Django, как правильно поступить?

Хочу рендерить страницы при помощи совмещения Django и React (видел такой подход много раз). Как это можно реализовать?
Хотелось бы отдавать данные на станицы напрямую в реакт, без построения restapi
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 4
half-life
@half-life
Хотелось бы отдавать данные на станицы напрямую в реакт, без построения restapi

И как ты себе это представляешь? Не ну вот честно, как?

Нет, ты конечно можешь получать данные из БД, потом делать сериализацию стандартными методами джанги и отдавать ответ через JsonResponse.... но зачем?

как правильно поступить?

django+djangorestframework на беке и всё, заверте.

Ну или что-то типа graphene-python что бы юзать graphql
Хотя если тебе хочется извращений то вперде - но не здесь.
Ответ написан
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
без построения restapi

Без проблем, свет клином на rest не сошёлся, используй любой другой подход к созданию api.
Ответ написан
ulkoart
@ulkoart
Лично мне не нравиться такой подход, но реализовать возможно...как простой вариант подключить реакт через CDN и рендерить все что нравиться через джановский шаблонизатор...еще уверен есть либы, которые позволят делать что-то по типу {% load react %} в шаблоне.
Ответ написан
@MAGistr_MTM
Учусь программировать
Можно начальные данные передать на страницу и записать в window. Напр:
<script type="text/javascript">
    Object.assign(window.config, {
      VET_DOC_URL: "{{ vet_doc_link }}",
      LANG_CODE: "{{ LANGUAGE_CODE }}",
      COMMERCE_VET_SEARCH_URL: "{% url 'base_vet_search' %}",
    })
  </script>


Потом часть страницы ренедерить через джангу стандартно шаблоном, а нужный блок ренедерить реактом(создать пустой div с нужным id для вставка реакт-компоненты. И включить на страницу JS с сбилдженым JS-ом реакта:
<div class="recommended_laboratories_groups desktop_tabs">
      <div class="recommended_head">{% trans 'Our brands' %}</div>
      <ul class="nav nav-tabs">
        {% for group in recommended_laboratories_groups %}
          <li class="{% if forloop.first %}active{% endif %} border_site_style">
            <a data-toggle="tab" href="#group--{{ group.pk }}">{{ group.get_name }}</a>
          </li>
        {% endfor %}
      </ul>
</div>
<div id='home_page_search_form' class="vet_search_container"></div>
<script type="text/javascript" src="{% static 'js/bundle/homepage.js' %}"></script>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы