Nouveau sur Django et encore plus récent sur ReactJS. J'ai étudié AngularJS et ReactJS, mais j'ai choisi ReactJS. Il semblait qu'il était en train de devancer AngularJS en termes de popularité malgré qu'AngularJS ait plus de part de marché, et ReactJS serait plus rapide à récupérer.
Tout cela mis à part, j'ai commencé à suivre un cours sur Udemy et après quelques vidéos, il m'a semblé important de voir à quel point il s'intègre bien à Django. C'est à ce moment-là que je heurte inévitablement un mur juste pour le faire fonctionner, quel genre de documentation existe-t-il pour que je ne fasse pas tourner les roues pendant plusieurs heures et nuits.
Il n'y a vraiment pas de didacticiels ou de pip
packages complets que j'ai rencontrés. Les rares que j'ai rencontrés ne fonctionnaient pas ou étaient datés, pyreact
par exemple.
Une pensée que j'avais était juste de traiter ReactJS complètement séparé, mais en tenant compte des classes et des ID dans lesquels je veux que les composants ReactJS soient rendus. Une fois que les composants ReactJS séparés sont compilés dans un seul fichier ES5, importez simplement ce fichier unique dans Django modèle.
Je pense que cela s'effondrera rapidement lorsque j'arriverai au rendu à partir de modèles Django, bien que Django Rest Framework semble impliqué. Pas même assez loin pour voir comment Redux affecte tout cela.
Quoi qu'il en soit, quelqu'un a une façon claire d'utiliser Django et ReactJS qu'il souhaite partager?
Quoi qu'il en soit, la documentation et les didacticiels sont abondants pour AngularJS et Django, il est donc tentant de suivre cette voie pour démarrer avec n'importe quel framework frontal ... Ce n'est pas la meilleure raison.
Réponses:
Je n'ai pas d'expérience avec Django mais les concepts du front-end au back-end et du framework front-end au framework sont les mêmes.
Voici quelques éléments que j'ai trouvés sur le Web qui devraient vous aider (sur la base d'une recherche rapide sur Google):
J'espère que cela vous orientera dans la bonne direction! Bonne chance! J'espère que d'autres spécialistes de Django pourront ajouter à ma réponse.
la source
{% render_bundle 'main' %}
est fausse et devrait l'être{% render_bundle "main" %}
.Je ressens votre douleur alors que moi aussi je commence à faire travailler Django et React.js ensemble. J'ai fait quelques projets Django, et je pense que React.js est un excellent match pour Django. Cependant, il peut être intimidant de commencer. Nous nous tenons sur les épaules de géants ici;)
Voici comment je pense, tout fonctionne ensemble (vue d'ensemble, veuillez me corriger si je me trompe).
La communication entre Django et «le frontend» se fait via le framework Rest. Assurez-vous d'avoir votre autorisation et vos autorisations pour le cadre Rest en place.
J'ai trouvé un bon modèle de chaudière pour exactement ce scénario et cela fonctionne hors de la boîte. Suivez simplement le readme https://github.com/scottwoodall/django-react-template et une fois que vous avez terminé, vous avez un joli projet Django Reactjs en cours d'exécution. Ce n'est en aucun cas destiné à la production, mais plutôt comme un moyen pour vous de creuser et de voir comment les choses sont connectées et fonctionnent!
Un petit changement que je voudrais suggérer est le suivant: Suivez les instructions de configuration MAIS avant d'arriver à la 2ème étape pour configurer le backend (Django ici https://github.com/scottwoodall/django-react-template/blob/master /backend/README.md ), modifiez le fichier des exigences pour l'installation.
Vous trouverez le fichier dans votre projet à /backend/requirements/common.pip Remplacez son contenu par ceci
cela vous donne la dernière version stable pour Django et son framework Rest.
J'espère que cela aide.
la source
Comme d'autres vous ont répondu, si vous créez un nouveau projet, vous pouvez séparer le frontend et le backend et utiliser n'importe quel plugin django rest pour créer une API de repos pour votre application frontend. C'est dans le monde idéal.
Si vous avez un projet avec le modèle django déjà en place, vous devez charger votre rendu react dom dans la page que vous souhaitez charger l'application. Dans mon cas, j'avais déjà django-pipeline et je viens d'ajouter l'extension browserify. ( https://github.com/j0hnsmith/django-pipeline-browserify )
Comme dans l'exemple, j'ai chargé l'application en utilisant django-pipeline:
Votre " entry-point.browserify.js " peut être un fichier ES6 qui charge votre application react dans le modèle:
Dans votre modèle django, vous pouvez maintenant charger facilement votre application:
L'avantage d'utiliser django-pipeline est que la statique est traitée pendant le
collectstatic
.la source
La première approche consiste à créer des applications Django et React séparées. Django sera chargé de servir l'API construite à l'aide du framework Django REST et React consommera ces API à l'aide du client Axios ou de l'API fetch du navigateur. Vous aurez besoin de deux serveurs, à la fois en développement et en production, un pour Django (API REST) et l'autre pour React (pour servir les fichiers statiques) .
La deuxième approche est différente, les applications frontales et backend seront couplées . En gros, vous utiliserez Django à la fois pour servir le frontend React et pour exposer l'API REST. Vous devrez donc intégrer React et Webpack avec Django, voici les étapes que vous pouvez suivre pour le faire
Générez d'abord votre projet Django puis dans ce répertoire de projet générez votre application React en utilisant la CLI React
Pour le projet Django, installez django-webpack-loader avec pip:
Ensuite, ajoutez l'application aux applications installées et configurez-la en
settings.py
ajoutant l'objet suivantAjoutez ensuite un template Django qui sera utilisé pour monter l'application React et sera servi par Django
Ajoutez ensuite une URL
urls.py
pour diffuser ce modèleSi vous démarrez les serveurs Django et React à ce stade, vous obtiendrez une erreur Django indiquant que le fichier
webpack-stats.json
n'existe pas. Vous devez donc ensuite rendre votre application React capable de générer le fichier de statistiques.Allez-y et naviguez dans votre application React puis installez
webpack-bundle-tracker
Puis éjectez votre configuration Webpack et allez à
config/webpack.config.dev.js
puis ajoutezCela ajoute le plugin BundleTracker à Webpack et lui demande de générer
webpack-stats.json
dans le dossier parent.Assurez-vous également de faire de même
config/webpack.config.prod.js
pour la production.Maintenant, si vous relancez votre serveur React, le
webpack-stats.json
sera généré et Django pourra le consommer pour trouver des informations sur les bundles Webpack générés par le serveur de développement React.Il y a d'autres choses à faire. Vous pouvez trouver plus d'informations dans ce tutoriel .
la source
npm run build
express
serveur en cours d'exécution qui servira des fichiers JS statiques React et que les fichiers JS feraient une requête ajax pour récupérer les données du serveur Django. Le navigateur frappe d'abord leexpress
serveur, il n'a aucune idée de celui de Django. Ai-je raison? Est-ce que quelque chose comme le rendu côté serveur est faisable avec cette approche?Une note pour toute personne venant d'un rôle backend ou basé sur Django et essayant de travailler avec ReactJS: Personne ne parvient à configurer l'environnement ReactJS avec succès du premier coup :)
Il existe un blog d'Owais Lone disponible sur http://owaislone.org/blog/webpack-plus-reactjs-and-django/ ; cependant, la syntaxe de la configuration de Webpack est bien dépassée.
Je vous suggère de suivre les étapes mentionnées dans le blog et de remplacer le fichier de configuration du webpack par le contenu ci-dessous. Cependant, si vous êtes nouveau à la fois dans Django et React, mâchez un à la fois à cause de la courbe d'apprentissage, vous serez probablement frustré.
la source
La réponse acceptée me porte à croire que le découplage du backend Django et de React Frontend est la bonne façon de procéder quoi qu'il arrive. En fait, il existe des approches dans lesquelles React et Django sont couplés, ce qui peut être mieux adapté dans des situations particulières.
Ce tutoriel explique bien cela. En particulier:
la source
Vous pouvez essayer le didacticiel suivant, il peut vous aider à avancer:
Servir React et Django ensemble
la source
Je sais que c'est quelques années de retard, mais je le mets là-bas pour la prochaine personne de ce voyage.
GraphQL a été utile et beaucoup plus facile par rapport à DjangoRESTFramework. Il est également plus flexible en termes de réponses que vous obtenez. Vous obtenez ce que vous demandez et vous n'avez pas à filtrer la réponse pour obtenir ce que vous voulez.
Vous pouvez utiliser Graphene Django côté serveur et React + Apollo / Relay ... Vous pouvez vous pencher dessus car ce n'est pas votre question.
la source