11.4 Exemple d'application web distribuée (WAD) adaptative avec Bootstrap/React et Django
Objectifs d'apprentissage
À la fin de cette section, vous serez capable de :
- Mettre à jour l'application web Todo avec Bootstrap, React et Django
- Étendre le dorsal Django pour prendre en charge le frontal React
- Connecter le frontal React au dorsal Django
Auparavant, vous avez appris à créer une application web Todo en utilisant Bootstrap et Django, puis en utilisant Bootstrap avec React et Node. Cette section passera en revue les étapes nécessaires pour mettre à jour l'application web Todo en utilisant Bootstrap avec React et Django.
Mise à jour de l'application web Todo avec Bootstrap, React et Django
Dans cette section, l'application web Todo implémentée s'appuiera sur l'application Django couverte dans 11.2 Exemple d'application web distribuée (WAD) adaptative avec Bootstrap et Django, ainsi que sur l'application React explorée dans 11.3 Exemple d'application web distribuée (WAD) adaptative avec Bootstrap/React et Node. Pour cette version de l'application web Todo, React sert de frontal pour gérer l'interface utilisateur afin d'obtenir et de définir des données via des requêtes HTTP. Django sert de dorsal.
Prérequis
Pour créer cette version de l'application Todo, vous avez besoin de Python v3.9.4, PIP v21.3.1, Django v4.0.1, Django REST Framework v3.13.1, Bootstrap v4.5.0, Django-cors-headers v3.11.0, React v17.0.2 et Axios v0.21.0. Pour commencer, suivez les étapes suivantes :
- Activez l'environnement virtuel (venv) utilisé dans la section 11A.2 :
cd py394venv
Windows :source ./Scripts/activate
macOS :source ./bin/activate - Installez Django Cors Headers dans l'environnement de programmation local
pip install django-cors-headers==3.11.0 ]
Lien vers l'apprentissage
Lors de l'utilisation de Django, les en-têtes de partage de ressources inter-origines (CORS) peuvent être un outil précieux pour permettre à une application Django d'accepter des requêtes effectuées depuis le navigateur provenant d'autres origines. Avec les en-têtes CORS, d'autres domaines peuvent accéder à vos ressources, mais uniquement si cela est autorisé. Utilisé de manière appropriée, cela fait de CORS un outil important pour renforcer la sécurité d'un site web.
Extension du dorsal Django pour prendre en charge le frontal React
Pour créer une application web Todo utilisant React comme frontal pour le dorsal Django, le projet Django (Django project) nécessite quelques configurations. Ouvrez TodoApp/settings.py et ajoutez 'corsheaders' à INSTALLED_APPS comme dans le code suivant.
INSTALLED _APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'corsheaders',
'rest_framework',
'todo',
]
En configurant le projet Django avec CORS, l'application Django sera autorisée à accepter des requêtes effectuées depuis le navigateur provenant d'autres origines. Pour ajouter CORS, ajoutez le middleware CORS à MIDDLEWARE, comme indiqué dans le code suivant.
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'corsheaders.middleware.CorsMiddleware',
]
Après avoir terminé cette étape, faites défiler jusqu'à la fin du fichier settings.py et ajoutez la variable suivante.
# ajoutez la liste blanche CORS pour localhost:3000 puisque le frontal React sera servi sur le port 3000
CORS_ORIGIN_WHITELIST = [
'http://localhost:3000'
]
Lien vers l'apprentissage
Axios est un client HTTP pour Node qui gère les requêtes HTTP asynchrones. Axios est gratuit et à code source ouvert, avec des mesures de sécurité intégrées. Axios utilise une syntaxe propre et efficace pour gérer les promesses, et fonctionne bien avec Node, ainsi qu'avec les environnements de navigateur. Visitez cette page sur Axios pour en savoir plus.
Connexion du frontal React au dorsal Django
Ensuite, l'application React doit être configurée pour pouvoir effectuer des requêtes vers les points d'accès API de l'application Django. L'application React utilise Axios pour récupérer des données en effectuant des requêtes vers un point d'accès donné. Pour installer Axios, exécutez la commande suivante dans le répertoire reactfrontend/ :
$ npm install [email protected]
Ensuite, ajoutez un proxy à l'application Django. Le proxy aidera à acheminer les requêtes API de l'application React vers http://localhost:8000, où l'application Django recevra et traitera les requêtes. Pour ajouter le proxy, ouvrez le fichier reactfrontend/package.json et ajoutez le code suivant.
{
"name": "reactfrontend",
"version": "0.1.0",
"private": true,
"proxy": "http://localhost:8080",
"dependencies": {
Après avoir terminé cette étape, ouvrez le fichier reactfrontend/src/App.js et importez Axios, comme indiqué dans le code suivant.
import './App.css';
import React, { Component } from "react";
import Modal from "./components/Modal";
import Nav from "./components/NavComponent";
import axios from "axios";
import { Button, Form, FormGroup, Label, Input } from 'reactstrap';
Pour mettre à jour le fichier reactfrontend/src/App.js, ajoutez le code suivant. La handleSubmit() utilisera Axios pour effectuer des requêtes vers les points d'accès API de Django afin de créer et de supprimer des éléments de tâche (todo).
handleSubmit = (item) => {
this.toggle();
if (item.id) {
axios
.put(`/api/todos/${item.id}/`, item)
.then((res) => this.refreshList());
return;
}
axios
.post("/api/todos/", item)
.then((res) => this.refreshList());
};
handleDelete = (item) => {
axios
.delete(`/api/todos/${item.id}/`)
.then((res) => this.refreshList());
};
Une fois ces étapes terminées, démarrez le serveur Django, puis démarrez l'application React, en utilisant les commandes suivantes, respectivement.
$ python manage.py runserver
$ npm start
Pour accéder à l'API REST de Django, naviguez vers http://localhost:8000/api/. Ceci est similaire aux étapes complétées dans 11.2 Exemple d'application web distribuée (WAD) adaptative avec Bootstrap et Django. Cliquez sur le chemin d'accès de l'API des catégories pour saisir deux catégories, comme illustré à la Figure 11.35.
Lorsque l'application React démarre, une page de navigateur se lancera automatiquement pour naviguer vers http://localhost:3000 et l'interface utilisateur devrait s'afficher. La Figure 11.36 montre la page sur laquelle créer un élément de tâche (todo).
À ce stade, revoyez l'API REST de Django. La Figure 11.37 montre que l'élément de tâche (todo) devrait être accessible via le chemin d'accès de l'API des tâches (todos).