Новый для Django и еще более новый для ReactJS. Я изучал AngularJS и ReactJS, но остановился на ReactJS. Казалось, что это вытесняет AngularJS настолько, насколько популярна, несмотря на то, что AngularJS имеет большую долю рынка, и ReactJS, как говорят, быстрее пикапует.
Помимо всего этого хлама, я начал изучать Удеми, и после нескольких видео мне показалось важным увидеть, насколько хорошо он интегрируется с Django. Именно тогда я неизбежно врезаюсь в стену, просто заводя ее и работая, какая документация там, чтобы я не крутил свои колеса в течение нескольких часов и ночей.
На самом деле pip
я не сталкивался с какими-либо всеобъемлющими учебниками или пакетами. pyreact
Например, те немногие, с которыми я сталкивался, не работали или были устаревшими .
Одна мысль, которая у меня была, заключалась в том, чтобы рассматривать ReactJS полностью отдельно, но с учетом классов и идентификаторов, которые я хочу отображать в компонентах ReactJS. После того, как отдельные компоненты ReactJS скомпилированы в один файл ES5, просто импортируйте этот единственный файл в Django. шаблон.
Я думаю, что это быстро сломается, когда я доберусь до рендеринга из моделей Django, хотя Django Rest Framework звучит так, будто он задействован. Даже недостаточно далеко, чтобы увидеть, как Redux влияет на все это.
В любом случае, у кого-нибудь есть четкий способ использования Django и ReactJS, которым они хотят поделиться?
В любом случае, документация и учебные пособия для AngularJS и Django многочисленны, поэтому заманчиво просто пойти по этому пути, чтобы начать работу с любой интерфейсной средой ... Не лучшая причина.
Ответы:
У меня нет опыта работы с Django, но концепции от front-end до back-end и от front-end framework до framework одинаковы.
Вот несколько вещей, которые я нашел в Интернете, которые должны помочь (на основе быстрого поиска в Google):
Надеюсь, это направит вас в правильном направлении! Удачи! Надеюсь, что другие, которые специализируются на Django, могут добавить к моему ответу.
источник
{% render_bundle 'main' %}
неверна и должна быть{% render_bundle "main" %}
.Я чувствую твою боль, когда начинаю работать вместе над Django и React.js. Я сделал пару проектов Django, и я думаю, что React.js отлично подходит для Django. Тем не менее, это может быть пугающим, чтобы начать. Мы стоим здесь на плечах гигантов;)
Вот как я думаю, все это работает вместе (большая картина, пожалуйста, кто-нибудь поправит меня, если я ошибаюсь).
Связь между Django и «внешним интерфейсом» осуществляется через структуру Rest. Убедитесь, что вы получили свои авторизацию и разрешения для структуры Rest на месте.
Я нашел хороший шаблон котла именно для этого сценария, и он работает из коробки. Просто следуйте инструкциям https://github.com/scottwoodall/django-react-template, и как только вы закончите, у вас будет запущен довольно хороший проект Django Reactjs. Это ни в коем случае не предназначено для производства, а скорее для того, чтобы вы покопались и увидели, как все связано и работает!
Крошечное изменение, которое я хотел бы предложить, заключается в следующем: следуйте инструкциям по настройке, НО, прежде чем перейти ко 2-му шагу по настройке бэкэнда (Django здесь https://github.com/scottwoodall/django-react-template/blob/master /backend/README.md ), измените файл требований для установки.
Вы найдете файл в своем проекте по адресу /backend/requirements/common.pip Замените его содержимое этим
это даст вам последнюю стабильную версию для Django и его фреймворка Rest.
Надеюсь, это поможет.
источник
Как вам ответили другие, если вы создаете новый проект, вы можете разделить интерфейс и бэкэнд и использовать любой плагин django rest для создания rest api для вашего приложения веб-интерфейса. Это в идеальном мире.
Если у вас уже есть проект с шаблонизатором django, вы должны загрузить рендеринг реагирования на страницу, на которую вы хотите загрузить приложение. В моем случае у меня уже был django-pipe, и я просто добавил расширение browserify. ( https://github.com/j0hnsmith/django-pipeline-browserify )
Как и в примере, я загрузил приложение, используя django-pipe:
Ваш " entry-point.browserify.js " может быть файлом ES6, который загружает ваше приложение реакции в шаблон:
Теперь в своем шаблоне django вы можете легко загрузить свое приложение:
Преимущество использования django-pipeline заключается в том, что статика обрабатывается во время
collectstatic
.источник
Первый подход заключается в создании отдельных приложений Django и React. Django будет нести ответственность за обслуживание API, созданного с использованием инфраструктуры Django REST, и React будет использовать эти API с помощью клиента Axios или API выборки браузера. Вам понадобится два сервера, как для разработки, так и для производства: один для Django (REST API) и другой для React (для обслуживания статических файлов) .
Второй подход заключается в том, что внешние и внутренние приложения будут связаны . По сути, вы будете использовать Django как для обслуживания внешнего интерфейса React, так и для предоставления REST API. Таким образом, вам нужно интегрировать React и Webpack с Django, вот шаги, которые вы можете выполнить, чтобы сделать это
Сначала сгенерируйте проект Django, а затем в этом каталоге проекта сгенерируйте приложение React с помощью React CLI.
Для проекта Django установите django-webpack-loader с помощью pip:
Затем добавьте приложение в установленные приложения и настройте его
settings.py
, добавив следующий объектЗатем добавьте шаблон Django, который будет использоваться для монтирования приложения React и будет обслуживаться Django.
Затем добавьте URL
urls.py
для обслуживания этого шаблонаЕсли в этот момент вы запустите серверы Django и React, вы получите сообщение об ошибке Django о том, что
webpack-stats.json
его не существует. Итак, затем вам нужно сделать приложение React способным генерировать файл статистики.Перейдите в свое приложение React и установите
webpack-bundle-tracker
Затем извлечь конфигурацию Webpack и перейти к
config/webpack.config.dev.js
добавьтеЭто добавляет плагин BundleTracker в Webpack и дает указание генерировать его
webpack-stats.json
в родительской папке.Не забудьте также сделать то же самое
config/webpack.config.prod.js
для производства.Теперь, если вы перезапустите сервер React,
webpack-stats.json
он будет сгенерирован, и Django сможет использовать его для поиска информации о пакетах Webpack, созданных сервером React dev.Есть и другие вещи. Вы можете найти больше информации из этого урока .
источник
npm run build
express
запущенный сервер, который будет обслуживать статические JS-файлы React, а JS-файлы будут выполнять запрос ajax для получения данных с сервера Django. Браузер сначала попадает наexpress
сервер, он не имеет никакого представления о Django. Я прав? Возможно ли что-то вроде рендеринга на стороне сервера с этим подходом?Примечание для тех, кто работает в бэкэнде или на основе Django и пытается работать с ReactJS: никому не удается успешно настроить среду ReactJS с первой попытки :)
Есть блог от Owais Lone, который доступен по адресу http://owaislone.org/blog/webpack-plus-reactjs-and-django/ ; однако синтаксис в конфигурации Webpack устарел.
Я предлагаю вам выполнить шаги, упомянутые в блоге, и заменить файл конфигурации веб-пакета следующим содержанием. Однако, если вы новичок в Django и React, жуйте по одному из-за кривой обучения, вы, вероятно, расстроитесь.
источник
Принятый ответ привел меня к мысли, что разделение бэкэнда Django и React Frontend - верный путь, несмотря ни на что. На самом деле существуют подходы, в которых React и Django связаны, что может лучше подходить в конкретных ситуациях.
Этот урок хорошо объясняет это. В частности:
источник
Вы можете попробовать следующее руководство, оно может помочь вам двигаться вперед:
Служим Реакту и Джанго вместе
источник
Я знаю, что это на пару лет позже, но я выкладываю это для следующего человека в этом путешествии.
GraphQL полезен и намного проще по сравнению с DjangoRESTFramework. Это также более гибко с точки зрения ответов, которые вы получаете. Вы получаете то, что просите, и вам не нужно фильтровать ответ, чтобы получить то, что вы хотите.
Вы можете использовать Graphene Django на стороне сервера и React + Apollo / Relay ... Вы можете посмотреть на это, поскольку это не ваш вопрос.
источник