NUOVO! VPS basato su EPYC + NVMe

Accedi
+1 (855) 311-1555

Come costruire una semplice applicazione con Django e React

15 min di lettura - 28 novembre 2025

hero section cover

Table of contents

  • Come costruire una semplice applicazione con Django e React
  • ProgettoDjango e React per principianti - Costruire un'applicazione Notes full-stack
  • Requisiti di configurazione e installazione
  • Creare il backend con Django
  • Creare il frontend con React
  • Collegare Django e React
  • Esecuzione e test dell'applicazione
  • Riepilogo e passi successivi
  • Domande frequenti

Share

Imparate a costruire un'applicazione web full-stack utilizzando Django per il backend e React per il frontend, con una guida passo dopo passo.

Come costruire una semplice applicazione con Django e React

Volete creare un'applicazione web con un backend solido e un frontend dinamico? L'abbinamento di Django, un framework Python, con React, una libreria JavaScript, è un ottimo modo per raggiungere questo obiettivo. Django gestisce attività di backend come la gestione del database e la creazione di API, mentre React crea un'interfaccia utente reattiva e interattiva.

Passi chiave:

  1. Configurare l'ambiente:- Installare Python 3.x per Django e Node.js per React.

    • Utilizzare gli ambienti virtuali per gestire le dipendenze di Python.
    • Confermare le installazioni con python --version, node --version e npm --version.
  2. Organizzare il progetto:- Creare cartelle separate per il backend Django e il frontend React.

    • Usare django-admin startproject per la configurazione del backend e npx create-react-app per l'inizializzazione del frontend.
  3. Creare il backend:- Creare applicazioni Django, definire modelli e generare migrazioni.

    • Usare Django REST Framework per creare endpoint API.
    • Configurare django-cors-headers per consentire la comunicazione tra frontend e backend.
  4. Sviluppare il frontend:- Utilizzare i componenti React per gestire le attività e le interazioni con gli utenti.

    • Installare Axios per le richieste API e integrarlo con gli endpoint Django.
    • Modellare l'applicazione con i CSS per ottenere un'interfaccia utente pulita.
  5. Connessione e test:- Eseguire Django su localhost:8000 e React su localhost:3000.

    • Testate gli endpoint API con strumenti come Postman o direttamente nel browser.
    • Assicurarsi che le impostazioni CORS siano corrette per una comunicazione senza problemi.

Questa configurazione consente di costruire in modo efficiente un'applicazione full-stack con una chiara separazione tra backend e frontend. Seguite questi passaggi per creare un'applicazione web scalabile e interattiva.

ProgettoDjango e React per principianti - Costruire un'applicazione Notes full-stack

Django

Requisiti di configurazione e installazione

Prima di iniziare a costruire la vostra applicazione Django e React, è fondamentale configurare l'ambiente di sviluppo con gli strumenti e le dipendenze necessarie. Questa base vi aiuterà a creare, integrare e testare i componenti Django e React senza problemi.

Requisiti di sistema e strumenti

Per iniziare, la macchina di sviluppo deve avere Python 3.x per Django e Node.js per React. In particolare, Django 5.0 richiede Python 3.x, mentre React funziona con Node.js versione 12 o superiore.

Installazione di Python: È possibile scaricare Python direttamente dal suo sito web ufficiale o utilizzare il gestore di pacchetti del sistema. Per gli utenti di macOS, Homebrew semplifica l'operazione con brew install python. Gli utenti di Windows dovrebbero scaricare il programma di installazione da python.org, mentre gli utenti di Linux possono installarlo con comandi come apt install python3 su Ubuntu o comandi simili per altre distribuzioni.

Impostazione di Node.js e npm: Node.js viene fornito con npm (Node Package Manager). Avrete bisogno di npm versione 6 o superiore, con la versione 7.5.4 come scelta affidabile. Scaricate Node.js da nodejs.org, che includerà automaticamente npm.

Ambienti virtuali Python: L'uso di ambienti virtuali è fondamentale per gestire le dipendenze specifiche del progetto senza conflitti. Si può usare il modulo venv integrato o strumenti come pipenv o virtualenvwrapper per ulteriori funzioni. Se siete su Windows, il pacchetto virtualenvwrapper-win fornisce una funzionalità simile.

Per confermare le installazioni, eseguite questi comandi nel vostro terminale:

python --versione node --versione npm --versione

Creare la struttura del progetto

Una struttura di progetto ben organizzata è essenziale per mantenere il codice del backend e del frontend separati e gestibili. Iniziate creando una cartella principale per il vostro progetto:

mkdir django-react-app cd django-react-app

All'interno di questa directory, create due cartelle: una per il backend Django e una per il frontend React. Questa separazione consente di mantenere e distribuire ogni parte in modo indipendente.

Configurate l'ambiente virtuale Python all'interno della cartella del progetto:

python -m venv venv

Attivare l'ambiente virtuale:

  • Su macOS/Linux: source venv/bin/activate
  • Su Windows: venv\Scripts\activate

Questo passaggio assicura che tutte le dipendenze di Python per il progetto siano isolate.

Installare i pacchetti necessari

Con l'ambiente pronto, è il momento di installare i pacchetti necessari per Django e React.

Pacchetti per il backend di Django: Mentre l'ambiente virtuale è attivo, installate Django e le sue librerie di supporto usando pip:

pip install django pip install djangorestframework pip install django-cors-headers
  • Django gestisce la logica del lato server, la gestione dei database e l'instradamento degli URL.
  • Django REST Framework semplifica il processo di costruzione di API RESTful, rendendo più facile la creazione di endpoint per il frontend React.
  • Django-cors-headers abilita il Cross-Origin Resource Sharing (CORS), essenziale per la comunicazione tra il frontend React (in esecuzione sulla porta 3000) e il backend Django (in esecuzione sulla porta 8000).

Configurazione del frontend React: Per configurare l'ambiente React, utilizzare lo strumento create-react-app. Questo comando inizializza un progetto React e installa tutte le dipendenze necessarie:

npx create-react-app frontend

Questo crea un nuovo progetto React in una directory frontend, completo di pacchetti essenziali, strumenti di sviluppo e script di compilazione.

Pacchetto frontend aggiuntivo: Dopo aver configurato il progetto React, spostatevi nella directory frontend e installate Axios, una libreria per effettuare richieste HTTP alle API di Django:

cd frontend npm install axios

A questo punto, il vostro ambiente di sviluppo è completamente equipaggiato con Python 3.x, Django, Node.js, React e tutti gli strumenti necessari. L'ambiente virtuale Python assicura che le dipendenze del backend siano isolate, mentre npm gestisce separatamente i pacchetti JavaScript. Ora siete pronti per iniziare a costruire la vostra applicazione full-stack!

Creare il backend con Django

Creare un backend Django con modelli di database, endpoint API e integrazione per un frontend React.

Creare un progetto e un'applicazione Django

Si inizia creando un progetto Django, che include impostazioni, configurazioni del database e opzioni specifiche dell'applicazione. All'interno di questo progetto, si costruirà un'applicazione Django, un pacchetto Python progettato per compiti specifici come la gestione dei dati o dei contenuti degli utenti.

Andate nella cartella principale del progetto (dove è stato creato l'ambiente virtuale) e create il progetto Django:

django-admin startproject backend .

Questo comando genera i file del progetto direttamente nella directory corrente, evitando una cartella aggiuntiva. Si noteranno nuovi file come manage.py (per eseguire i comandi di Django) e una cartella backend contenente file come settings.py, urls.py, asgi.py e wsgi.py.

Quindi, creare un'applicazione per gestire funzionalità specifiche. Per esempio, un sistema di gestione delle attività:

python manage.py startapp tasks

Questo crea una cartella tasks con file essenziali come models.py, views.py, admin.py e una cartella migrations. Assicuratevi di evitare conflitti di denominazione con nomi incorporati come "django" o "test".

Registrare l'applicazione nelle impostazioni del progetto, aggiungendola all'elenco INSTALLED_APPS in backend/settings.py:

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'corsheaders', 'tasks', # Registra la tua applicazione ]

Impostazione di modelli e serializzatori

Definire la struttura dei dati con i modelli di Django. Ad esempio, un semplice modello Task per l'applicazione di gestione delle attività può essere aggiunto in tasks/models.py:

from django.db import models class Task(models.Model): title = models.CharField(max_length=200) description = models.TextField(blank=True) completed = models.BooleanField(default=False) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: ordering = ['-created_at'] def __str__(self): return self.title

Questo modello include campi come CharField per il testo breve, TextField per i contenuti più lunghi, BooleanField per i valori vero/falso e DateTimeField per i timestamp. La classe Meta specifica opzioni come l'ordinamento predefinito.

Applicare il modello al database eseguendo le migrazioni:

python manage.py makemigrations tasks python manage.py migrate

Per convertire i dati del modello in JSON, utilizzare i serializzatori del framework REST di Django. In tasks/serializers.py, definire un serializzatore per il modello Task:

from rest_framework import serializers from .models import Task class TaskSerializer(serializers.ModelSerializer): class Meta: model = Task fields = ['id', 'title', 'description', 'completed', 'created_at', 'updated_at'] read_only_fields = ['created_at', 'updated_at']

Il ModelSerializer genera automaticamente campi e metodi in base al modello. Elencando esplicitamente i campi, si evita di esporre involontariamente dati sensibili.

Creazione di endpoint API

Il framework REST di Django semplifica la creazione di API. Per le operazioni CRUD standard, utilizzare ViewSet con router per una struttura pulita e REST.

In tasks/views.py, creare le viste API:

from rest_framework import viewsets from rest_framework.permissions import AllowAny from .models import Task from .serializers import TaskSerializer class TaskViewSet(viewsets.ModelViewSet): queryset = Task.objects.all() serializer_class = TaskSerializer permission_classes = [AllowAny] # Solo per lo sviluppo

Il ModelViewSet gestisce automaticamente l'elenco, la creazione, il recupero, l'aggiornamento e la cancellazione dei task.

Impostare il routing degli URL in tasks/urls.py:

from django.urls import path, include from rest_framework.routers import DefaultRouter from .views import TaskViewSet router = DefaultRouter() router.register(r'tasks', TaskViewSet) urlpatterns = [ path('api/', include(router.urls)), ]

Includere questi URL nel file principale backend/urls.py:

from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('tasks.urls')), ]

Configurazione delle intestazioni CORS

Per consentire al frontend React (in esecuzione sulla porta 3000) di comunicare con il backend Django (sulla porta 8000), configurare il Cross-Origin Resource Sharing (CORS). Senza questa configurazione, i browser bloccano le richieste cross-origin per motivi di sicurezza.

Aggiornare backend/settings.py per includere la configurazione CORS:

MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', # Aggiungere questo in cima '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', ] # Impostazioni CORS per lo sviluppo CORS_ALLOWED_ORIGINS = [ "http://localhost:3000", # server di sviluppo React "http://127.0.0.1:3000", ] CORS_ALLOW_CREDENTIALS = True

Per un test rapido, si può usare CORS_ALLOW_ALL_ORIGINS = True, ma specificare le origini consentite è più sicuro.

Testare gli endpoint dell'API

Prima di integrare il frontend React, testare gli endpoint dell'API per assicurarsi che funzionino come previsto. Avviare il server di sviluppo Django:

python manage.py runserver

Accedere all'API all'indirizzo http://127.0.0.1:8000/api/tasks/. Utilizzare l'API navigabile per testare operazioni come le richieste GET e POST.

In alternativa, testare con cURL o Postman:

# Prova la richiesta GET per elencare i compiti curl -X GET http://127.0.0.1:8000/api/tasks/ # Prova la richiesta POST per creare un compito curl -X POST http://127.0.0.1:8000/api/tasks/ \ -H "Content-Type: application/json" \ -d '{"title": "Test Task", "description": "Questo è un compito di prova"}'

Per i test automatici, aggiungere i casi di test in tasks/tests.py:

from rest_framework.test import APITestCase from rest_framework import status from .models import Task class TaskAPITestCase(APITestCase): def test_create_task(self): # Aggiungete qui le vostre asserzioni e la logica di test pass

Con il backend al suo posto, si è pronti a collegarlo al frontend di React.

Creare il frontend con React

Per creare un'interfaccia accattivante per il backend Django, si utilizzerà React per gestire le interazioni dell'utente, dalla visualizzazione delle attività all'aggiunta di nuove.

Impostazione di un progetto React

Iniziate a configurare il vostro frontend React usando Create React App. Navigate nella directory principale del progetto (dove risiede il backend Django) ed eseguite:

npx create-react-app frontend cd frontend

Questo comando imposta un'applicazione React con file essenziali come package.json, src/App.js e public/index.html. Include anche strumenti come webpack per il bundling, Babel per la compilazione di JavaScript e un server di sviluppo per i test.

Installare quindi Axios per gestire le richieste HTTP alle API di Django:

npm install axios

Axios semplifica le chiamate API gestendo l'analisi JSON e offrendo una migliore gestione degli errori rispetto alla funzione integrata fetch(). Supporta anche funzioni come gli intercettori di richieste e risposte.

La struttura delle cartelle dovrebbe ora apparire come segue:

project-root/ ├── backend/ │ ├── manage.py │ ├── backend/ │ └── tasks/ └── frontend/ ├── package.json ├── public/ └── src/

Per verificare che tutto funzioni, avviare il server di sviluppo React:

npm start

Questo lancia l'applicazione all'indirizzo http://localhost:3000, visualizzando la pagina di benvenuto predefinita di React. Mantenete questo server in funzione durante lo sviluppo: si ricarica automaticamente quando si apportano modifiche.

Creare componenti React

Creiamo un componente TaskList per visualizzare le attività recuperate dall'API di Django. Aggiungere quanto segue a src/components/TaskList.js:

import React from 'react'; const TaskList = ({ tasks, onToggleComplete, onDeleteTask }) => { return ( <div className="task-list"> <h2>Your Tasks</h2> {tasks.length === 0 ? ( <p>No tasks available. Crea la tua prima attività! </p> ) : ( <ul> {tasks.map((attività) => ( <li key={task.id} className={`task-item ${task.completed ? 'completato' : ''}`}> <div className="task-content"> <h3>{compito.titolo}</h3> <p>{compito.descrizione}</p> <small>Creato: {new Date(task.created_at).toLocaleDateString()}</small> </div> <div className="task-actions"> <button onClick={() => onToggleComplete(task.id, !task.completed)} className={task.completed ? 'btn-undo' : 'btn-complete'} > {attività.completata? 'Undo' : 'Complete'} </button> <button onClick={() => onDeleteTask(task.id)} className="btn-delete" > Delete </button> </div> </li> ))} </ul> )} </div> ); }; export default TaskList;

Quindi, creare un componente TaskForm per aggiungere nuovi compiti. Aggiungerlo a src/components/TaskForm.js:

import React, { useState } from 'react'; const TaskForm = ({ onAddTask }) => { const [title, setTitle] = useState(''); const [description, setDescription] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const handleSubmit = async (e) => { e.preventDefault(); if (!title.trim()) return; setIsSubmitting(true); try { await onAddTask({ title: title.trim(), description: description.trim() }); setTitle(''); setDescription(''); } catch (error) { console.error('Errore nell'aggiunta dell'attività:', error); } finally { setIsSubmitting(false); } }; return ( <form onSubmit={handleSubmit} className="task-form"> <h2>Add New Task</h2> <div className="form-group"> <input type="text" placeholder="Titolo dell'attività" value={titolo} onChange={(e) => setTitle(e.target.valore)} disabled={isSubmitting} required /> </div> <div className="form-group"> <textarea placeholder="Descrizione dell'incarico (opzionale)" value={descrizione} onChange={(e) => setDescrizione(e.target.value)} disabled={isSubmitting} rows="3" /> </div> <button type="submit" disabled={isSubmitting || !title.trim()}> {isSubmitting ? 'Adding...' : 'Add Task'} </button> </form> ); }; export default TaskForm;

Per uno stile di base, creare un file src/App.css e aggiungere:

.task-list { margin: 20px 0; } .task-item { display: flex; justify-content: space-between; align-items: center; padding: 15px; border: 1px solid #ddd; margin-bottom: 10px; border-radius: 5px; } .task-item.completed { background-color: #f0f8f0; text-decoration: line-through; opacity: 0.7; } .task-form { background: #f9f9f9; padding: 20px; border-radius: 5px; margin-bottom: 20px; } .form-group { margin-bottom: 15px; } .form-group input, .form-group textarea { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 3px; } .btn-complete, .btn-undo, .btn-delete { margin-left: 10px; padding: 5px 10px; border: none; border-radius: 3px; cursore: puntatore; } .btn-complete { background: #28a745; color: white; } .btn-undo { background: #ffc107; color: black; } .btn-delete { background: #dc3545; colore: bianco; }

Gestione dello stato e integrazione delle API

I ganci di React come useState e useEffect semplificano la gestione dello stato e l'interazione con il backend di Django. Per centralizzare le chiamate API, creare un file di servizio src/services/api.js:

import axios da 'axios'; const API_BASE_URL = 'http://127.0.0.1:8000/api'; const api = axios.create({ baseURL: API_BASE_URL, header: { 'Content-Type': 'application/json', }, }); export const taskAPI = { getTasks: () => api.get('/tasks/'), createTask: (taskData) => api.post('/tasks/', taskData), updateTask: (taskId, taskData) => api.put(`/tasks/${taskId}/`, taskData), deleteTask: (taskId) => api.delete(`/tasks/${taskId}/`), }; export default api;

Infine, integrare tutto in src/App.js:

import React, { useState, useEffect } from 'react'; import TaskList from './components/TaskList'; import TaskForm from './components/TaskForm'; import { taskAPI } from './services/api'; import './App.css'; function App() { const [tasks, setTasks] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { fetchTasks(); }, []); const fetchTasks = async () => { try { setLoading(true); const response = await taskAPI.getTasks(); setTasks(response.data); } catch (err) { setError(err); } finally { setLoading(false); } }; // I metodi aggiuntivi per l'aggiunta, l'aggiornamento e la cancellazione dei task andrebbero qui }

Con questa configurazione, il frontend React è pronto a gestire i task in modo interattivo e a comunicare senza problemi con il backend Django.

background image
Il vostro server sta frenando la vostra crescita?

Stanchi di implementazioni lente o di limiti di larghezza di banda? FDC Servers offre potenza dedicata istantanea, portata globale e piani flessibili costruiti per qualsiasi scala. Pronti per l'aggiornamento?

Sbloccate le prestazioni ora

Collegare Django e React

Ora che il backend e il frontend sono operativi, il passo successivo è garantire una comunicazione fluida tra loro. Ciò comporta l'impostazione di endpoint API, la gestione delle richieste e la risoluzione di eventuali intoppi di integrazione.

Impostazione degli URL API in React

L'applicazione React deve sapere dove localizzare gli endpoint dell'API di Django. A tale scopo, aggiornare il file src/services/api.js con le configurazioni specifiche dell'ambiente:

import axios from 'axios'; // Determinare l'URL di base dell'API in base all'ambiente const getApiBaseUrl = () => { if (process.env.NODE_ENV === 'production') { return process.env.REACT_APP_API_URL || 'https://your-production-domain.com/api'; } return 'http://127.0.0.1:8000/api'; }; const API_BASE_URL = getApiBaseUrl(); const api = axios.create({ baseURL: API_BASE_URL, header: { 'Content-Type': 'application/json', }, timeout: 10000, // timeout di 10 secondi }); export const taskAPI = { getTasks: () => api.get('/tasks/'), createTask: (taskData) => api.post('/tasks/', taskData), updateTask: (taskId, taskData) => api.put(`/tasks/${taskId}/`, taskData), deleteTask: (taskId) => api.delete(`/tasks/${taskId}/`), }; export default api;

Per la produzione, aggiungere un file .env alla radice del progetto React con il seguente contenuto:

REACT_APP_API_URL=https://your-production-domain.com/api

Questa configurazione assicura che la vostra applicazione React possa interagire senza problemi con il backend Django, sia che siate in un ambiente di sviluppo locale sia che stiate distribuendo in produzione. Con gli endpoint API configurati, si è pronti a recuperare e manipolare i dati del backend.

Recuperare i dati dal backend

Una volta impostata la configurazione dell'API, è possibile eseguire operazioni CRUD per gestire i dati tra React e Django. Aggiornare src/App.js per gestire queste operazioni:

import React, { useState, useEffect } from 'react'; import TaskList from './components/TaskList'; import TaskForm from './components/TaskForm'; import { taskAPI } from './services/api'; import './App.css'; function App() { const [tasks, setTasks] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { fetchTasks(); }, []); const fetchTasks = async () => { try { setLoading(true); setError(null); const response = await taskAPI.getTasks(); setTasks(response.data); } catch (err) { setError('Failed to fetch tasks. Please check your connection.'); console.error('Error fetching tasks:', err); } finally { setLoading(false); } }; const handleAddTask = async (taskData) => { try { const response = await taskAPI.createTask(taskData); setTasks(prevTasks => [...prevTasks, response.data]); } catch (err) { console.error('Errore nell'aggiunta di un'attività:', err); throw err; // Rilancio per consentire a TaskForm di gestire l'errore } }; const handleToggleComplete = async (taskId, completed) => { try { const taskToUpdate = tasks.find(task => task.id === taskId); const updatedTaskData = { ...taskToUpdate, completato }; const response = await taskAPI.updateTask(taskId, updatedTaskData); setTasks(prevTasks => prevTasks.map(task => task.id === taskId ? response.data : task ) ); } catch (err) { console.error('Errore nell'aggiornamento dell'attività:', err); } }; const handleDeleteTask = async (taskId) => { if (!window.confirm('Sei sicuro di voler cancellare questa attività?')) { return; } try { await taskAPI.deleteTask(taskId); setTasks(prevTasks => prevTasks.filter(task => task.id.== taskId)); } catch (err) { console.error('Errore nell'eliminazione dell'attività:', err); } }; if (loading) { return <div className="loading">Caricamento attività...</div>; } return ( <div className="App"> <header className="App-header"> <h1>Gestione attività</h1> </header> <main className="container"> {error && <div className="error-message">{error}</div>} <TaskForm onAddTask={handleAddTask} /> <TaskList tasks={attività} onToggleComplete={handleToggleComplete} onDeleteTask={handleDeleteTask} /> </main> </div> ); } export default App;

Questo codice gestisce la creazione, l'aggiornamento, l'eliminazione e la gestione degli errori dei task. L'interfaccia utente si aggiorna immediatamente, per un'esperienza d'uso fluida, e gli errori vengono gestiti con grazia, annullando le modifiche o mostrando i messaggi appropriati.

Test e debug della connessione

Uno degli ostacoli più comuni quando si collegano Django e React è la gestione degli errori CORS (Cross-Origin Resource Sharing). Questi si verificano perché i browser bloccano le richieste tra origini diverse per motivi di sicurezza. Durante lo sviluppo, React viene solitamente eseguito su localhost:3000, mentre Django opera su localhost:8000, creando uno scenario di origine incrociata.

Per risolvere i problemi CORS, assicurarsi di aver configurato le intestazioni CORS nelle impostazioni di Django come indicato nella sezione "Configurazione delle intestazioni CORS". Dopo aver apportato le modifiche, riavviare il server Django per applicarle.

Ecco un paio di errori comuni nelle richieste API e le relative soluzioni:

  • HTTP 400 (Bad Request): Di solito significa che alcuni dati richiesti sono mancanti o malformati nel payload della richiesta. Ad esempio, nel novembre 2023, FintanMi ha riscontrato un errore 400 durante la creazione di una community in un progetto Django REST Framework e React perché nella richiesta mancava il campo owner. Verificare sempre che il frontend invii tutti i campi obbligatori previsti dai modelli Django.
  • HTTP 405 (Metodo non consentito): Si verifica quando l'endpoint dell'API non supporta il metodo HTTP in uso. Ad esempio, FintanMi ha segnalato un errore 405 quando si cercava di cancellare un post, che è stato risolto aggiornando la vista Django da generics.RetrieveUpdateAPIView a generics.RetrieveUpdateDestroyAPIView per includere il supporto per le richieste DELETE.

Esecuzione e test dell'applicazione

Dopo aver collegato il backend Django e il frontend React, è il momento di lanciare entrambi i server di sviluppo e testare l'applicazione. Si tratta di far funzionare due server contemporaneamente e di assicurarsi che tutto funzioni senza problemi.

Avviare i server di sviluppo

Per eseguire la vostra applicazione Django-React, avrete bisogno di due finestre di terminale, una per ogni server. Questa configurazione consente al backend e al frontend di operare in modo indipendente comunicando attraverso le chiamate API.

Avvio del server backend Django:

  1. Aprire la prima finestra di terminale e navigare nella directory principale del progetto Django.

  2. Attivare l'ambiente virtuale Python:

    source venv/bin/activate
    
  3. Avviare il server di sviluppo Django:

    python manage.py runserver
    

    Il server sarà disponibile all'indirizzo http://127.0.0.1:8000/.

Avviare il server frontend React:

  1. Aprire una seconda finestra di terminale e navigare nella directory del progetto React:

    cd frontend
    
  2. Avviare il server di sviluppo React:

    npm start
    

    Questo aprirà automaticamente una finestra del browser all'indirizzo http://localhost:3000/.

Una volta che entrambi i server sono in funzione, si può iniziare a testare la funzionalità dell'applicazione.

Testare l'intera funzionalità dell'applicazione

Con i server attivi e funzionanti e gli endpoint CORS e API configurati correttamente, è il momento di convalidare il flusso di dati tra il frontend e il backend.

Verifica dell'API di backend:

  • Testate gli endpoint dell'API di Django direttamente visitando il sito:

    http://localhost:8000/api/tasks
    

    Dovrebbe essere visualizzata l'interfaccia API navigabile di Django REST Framework, dove è possibile eseguire operazioni di CREAZIONE e LETTURA.

  • Accedere all'interfaccia amministrativa di Django all'indirizzo:

    http://localhost:8000/admin
    

    Accedere con le proprie credenziali di superutente per creare, modificare o cancellare attività. È inoltre possibile testare le operazioni di UPDATE e DELETE visitando il sito:

    http://localhost:8000/api/tasks/{id}
    

Test di integrazione frontend-backend:

  • Aprire l'applicazione React su http://localhost:3000 e verificare che venga caricata correttamente, visualizzando le attività dal backend Django.
  • Testare ogni operazione CRUD attraverso l'interfaccia React:- Aggiungere un nuovo task e verificare che venga visualizzato sia nell'interfaccia React che nel backend.
    • Modificare un task esistente e verificare che le modifiche vengano salvate.
    • Eliminare un'attività e verificare che venga rimossa sia dal frontend che dal database.

Se l'applicazione include filtri o altre funzioni, testatele a fondo per verificare che le attività vengano visualizzate come previsto.

Risolvere i problemi più comuni

Se durante i test si verificano problemi, ecco alcune soluzioni comuni da provare.

Errori di connessione API:

  • Assicurarsi che entrambi i server siano in esecuzione sulle rispettive porte: Django su http://localhost:8000 e React su http://localhost:3000.

  • Usare gli strumenti per gli sviluppatori del browser (scheda Rete) per identificare i codici di stato HTTP come 404 o 500.

  • Controllare l'impostazione del proxy nel file package.json del progetto React:

    "proxy": "http://localhost:8000"
    

    Se si apportano modifiche, riavviare il server React.

Problemi di avvio del server:

  • Se il server Django non si avvia, verificare se mancano le migrazioni:

    python manage.py makemigrations python manage.py migrate
    
  • Per i problemi del server React, provare a reinstallare le dipendenze:

    npm install
    

Problemi di flusso di dati:

  • Usare gli strumenti di sviluppo del browser per ispezionare le richieste di rete e gli errori della console.
  • Aggiungere dichiarazioni di debug, come console.log() in React o print nelle viste di Django, per tracciare il flusso dei dati.
  • Verificare che gli URL delle API nell'applicazione React corrispondano esattamente agli schemi URL di Django, compresi gli slash finali (ad esempio, /api/tasks/).

Riepilogo e passi successivi

Avete creato un'applicazione web che combina Django e React, fornendo una solida introduzione allo sviluppo full-stack. Questo progetto mette in evidenza concetti essenziali come la separazione del backend dal frontend, l'esecuzione di operazioni CRUD e la gestione delle richieste cross-origin utilizzando le impostazioni CORS. Lungo il percorso, si è lavorato con Django REST Framework per costruire API e si sono utilizzati gli hook di React per la gestione dello stato, competenze che consentono un'integrazione fluida tra questi due potenti strumenti.

Portare l'applicazione al livello successivo

C'è molto spazio per espandere le funzionalità della vostra applicazione. Ad esempio, è possibile aggiungere l'autenticazione JWT utilizzando Django REST Framework per proteggere i dati degli utenti e l'accesso alle API. Questo vi permetterà di offrire funzionalità specifiche per l'utente ed esperienze personalizzate.

Se la vostra applicazione ha bisogno di aggiornamenti in tempo reale, prendete in considerazione l'utilizzo di Django Channels per abilitare il supporto WebSocket. Questo è perfetto per funzioni come cruscotti in tempo reale, sistemi di chat o notifiche, che trasformano l'app in una piattaforma più dinamica e interattiva.

Con la crescita dell'applicazione, la visualizzazione avanzata dei dati diventa importante. Combinando le capacità di rendering di React con un efficiente fetching dei dati di backend, sarete in grado di gestire e visualizzare in modo efficace insiemi di dati complessi.

Prepararsi alla produzione

Quando preparate la vostra applicazione per la produzione, concentratevi sulla distribuzione, sulla sicurezza e sulle prestazioni. Mentre la configurazione attuale è ottima per lo sviluppo locale, gli ambienti di produzione richiedono ulteriori passaggi. Tra questi, l'impostazione delle variabili d'ambiente, l'ottimizzazione del database e l'implementazione di solidi meccanismi di gestione degli errori.

Questi miglioramenti si basano sulle competenze già sviluppate, come la progettazione di API, l'architettura basata su componenti e l'integrazione full-stack. Padroneggiando queste tecniche avanzate, sarete ben attrezzati per affrontare progetti di livello aziendale e continuare a crescere come sviluppatori web.

Domande frequenti

Quali sono i vantaggi di utilizzare Django per il backend e React per il frontend nella realizzazione di un'applicazione web?

L'utilizzo di Django per il backend e di React per il frontend crea una forte miscela per lo sviluppo di applicazioni web moderne. Django fornisce un framework solido e ricco di strumenti che semplificano lo sviluppo del backend, mentre React brilla nella creazione di interfacce utente dinamiche e interattive.

Questa combinazione promuove una netta separazione delle responsabilità, che aiuta a mantenere la base di codice organizzata e più facile da espandere nel tempo. La struttura a componenti di React favorisce il riutilizzo degli elementi dell'interfaccia utente, mentre il framework REST di Django semplifica il processo di creazione delle API, garantendo una comunicazione fluida tra frontend e backend. Insieme, offrono un approccio rapido, efficiente e incentrato sull'utente allo sviluppo di applicazioni.

Come si risolvono i problemi CORS quando si collega un frontend React a un backend Django?

Per risolvere i problemi CORS tra un frontend React e un backend Django, il pacchetto django-cors-headers è una soluzione pratica. Innanzitutto, installatelo con pip. Quindi, nel file settings.py, aggiungere 'corsheaders' all'elenco INSTALLED_APPS. Successivamente, includere 'corsheaders.middleware.CorsMiddleware' all'inizio dell'elenco MIDDLEWARE, per garantire un ordine di esecuzione corretto del middleware.

Durante lo sviluppo, si possono semplificare le cose impostando CORS_ORIGIN_ALLOW_ALL = True nel file settings.py. In questo modo si possono accettare richieste da qualsiasi origine. Tuttavia, in un ambiente di produzione, è molto più sicuro definire domini attendibili specifici usando l'impostazione CORS_ALLOWED_ORIGINS. Questo approccio aiuta a mantenere una sicurezza più stretta.

Con questa configurazione, l'applicazione React può interagire senza problemi con le API di Django rimanendo conforme ai requisiti CORS.

Come posso preparare la mia applicazione Django e React per la distribuzione in produzione?

Per preparare la vostra applicazione Django e React per la produzione, iniziate a regolare le impostazioni di Django per una configurazione sicura. Ciò include l'impostazione di DEBUG su False e la specificazione di ALLOWED_HOSTS per controllare quali domini possono accedere all'applicazione. Queste modifiche sono essenziali per proteggere l'applicazione in un ambiente live.

Successivamente, selezionare una piattaforma di hosting affidabile per il backend e i file statici di Django. Assicuratevi che l'infrastruttura sia in grado di gestire il traffico e le richieste di produzione. Per il frontend React, utilizzare gli strumenti di compilazione appropriati per generare una build di produzione ottimizzata.

Una volta che la vostra applicazione React è pronta, configurate un server web come Nginx per servire sia il frontend React che il backend Django. Una corretta configurazione del server assicura che l'applicazione venga eseguita in modo efficiente e fornisca agli utenti un'esperienza senza interruzioni.

Prima di andare in produzione, testate a fondo l'applicazione nell'ambiente di produzione. Questa fase aiuta a identificare e risolvere eventuali problemi, assicurando che l'applicazione funzioni in modo affidabile una volta lanciata.

Blog

In primo piano questa settimana

Altri articoli
Monitoraggio del server dedicato o del VPS, quali sono le opzioni nel 2025?

Monitoraggio del server dedicato o del VPS, quali sono le opzioni nel 2025?

Esplora i migliori strumenti di monitoraggio per server dedicati e VPS nel 2025, concentrandosi su AI, automazione e analisi in tempo reale.

12 min di lettura - 28 novembre 2025

Come scegliere il miglior server GPU per i carichi di lavoro AI

10 min di lettura - 15 ottobre 2025

Altri articoli
background image

Avete domande o avete bisogno di una soluzione personalizzata?

icon

Opzioni flessibili

icon

Portata globale

icon

Distribuzione immediata

icon

Opzioni flessibili

icon

Portata globale

icon

Distribuzione immediata