Πώς να δημιουργήσετε μια απλή εφαρμογή με Django και React
15 λεπτά ανάγνωσης - 28 Νοεμβρίου 2025

Μάθετε πώς να δημιουργήσετε μια εφαρμογή ιστού πλήρους στοίβας (full-stack) χρησιμοποιώντας το Django για το backend και το React για το frontend, με οδηγίες βήμα προς βήμα.
Πώς να δημιουργήσετε μια απλή εφαρμογή με Django και React
Θέλετε να δημιουργήσετε μια διαδικτυακή εφαρμογή με ισχυρό backend και δυναμικό frontend; Ο συνδυασμός του Django, ενός πλαισίου Python, με το React, μιας βιβλιοθήκης JavaScript, είναι ένας εξαιρετικός τρόπος για να το επιτύχετε αυτό. Το Django χειρίζεται εργασίες backend όπως τη διαχείριση βάσεων δεδομένων και τη δημιουργία API, ενώ το React δημιουργεί μια ανταποκρινόμενη, διαδραστική διεπαφή χρήστη.
Βασικά βήματα:
- Ρύθμιση του περιβάλλοντος σας:
- Εγκαταστήστε το Python 3.x για το Django και το Node.js για το React.
- Χρησιμοποιήστε εικονικά περιβάλλοντα για τη διαχείριση των εξαρτήσεων της Python.
- Επαληθεύστε τις εγκαταστάσεις με το
python --version,node --version, καιnpm --version.
- Οργανώστε το έργο σας:
- Δημιουργήστε ξεχωριστούς φακέλους για το backend του Django και το frontend του React.
- Χρησιμοποιήστε
django-admin startprojectγια τη ρύθμιση του backend καιnpx create-react-appγια την αρχικοποίηση του frontend.
- Δημιουργήστε το backend:
- Δημιουργήστε εφαρμογές Django, ορίστε μοντέλα και δημιουργήστε μετακινήσεις.
- Χρησιμοποιήστε το Django REST Framework για τη δημιουργία τελικών σημείων API.
- Διαμορφώστε
django-cors-headersγια να ενεργοποιήσετε την επικοινωνία μεταξύ frontend και backend.
- Ανάπτυξη του frontend:
- Χρησιμοποιήστε στοιχεία React για τη διαχείριση εργασιών και αλληλεπιδράσεων χρηστών.
- Εγκαταστήστε το Axios για αιτήματα API και ενσωματώστε το στα σημεία τερματισμού του Django.
- Διαμορφώστε την εφαρμογή με CSS για μια καθαρή διεπαφή χρήστη.
- Σύνδεση και δοκιμή:
- Εκτελέστε το Django σε
localhost:8000και το React στοlocalhost:3000. - Δοκιμάστε τα τελικά σημεία API με εργαλεία όπως το Postman ή απευθείας στον περιηγητή.
- Βεβαιωθείτε ότι οι ρυθμίσεις CORS είναι σωστές για ομαλή επικοινωνία.
- Εκτελέστε το Django σε
Αυτή η ρύθμιση σας επιτρέπει να δημιουργήσετε αποτελεσματικά μια εφαρμογή πλήρους στοίβας (full-stack) με σαφή διαχωρισμό μεταξύ backend και frontend. Ακολουθήστε αυτά τα βήματα για να δημιουργήσετε μια επεκτάσιμη, διαδραστική εφαρμογή ιστού.
Απαιτήσεις εγκατάστασης και ρύθμιση
Πριν ξεκινήσετε την ανάπτυξη της εφαρμογής σας με Django και React, είναι ζωτικής σημασίας να ρυθμίσετε το περιβάλλον ανάπτυξης σας με τα απαραίτητα εργαλεία και εξαρτήσεις. Αυτή η βάση θα σας βοηθήσει να δημιουργήσετε, να ενσωματώσετε και να δοκιμάσετε τα στοιχεία Django και React σας ομαλά καθώς προχωράτε.
Απαιτήσεις συστήματος και εργαλεία
Για να ξεκινήσετε, ο υπολογιστής ανάπτυξης σας θα χρειαστεί το Python 3.x για το Django και το Node.js για το React. Συγκεκριμένα, το Django 5.0 απαιτεί το Python 3.x, ενώ το React λειτουργεί με το Node.js έκδοση 12 ή νεότερη.
Εγκατάσταση Python: Μπορείτε να κατεβάσετε το Python απευθείας από την επίσημη ιστοσελίδα του ή να χρησιμοποιήσετε τον διαχειριστή πακέτων του συστήματός σας. Για τους χρήστες macOS, το Homebrew διευκολύνει τη διαδικασία με brew install python. Οι χρήστες των Windows θα πρέπει να κατεβάσουν το πρόγραμμα εγκατάστασης από το python.org, ενώ οι χρήστες Linux μπορούν να το εγκαταστήσουν με εντολές όπως apt install python3 στο Ubuntu ή παρόμοιες εντολές για άλλες διανομές.
Ρύθμιση του Node.js και του npm: Το Node.js συνοδεύεται από το npm (Node Package Manager). Θα χρειαστείτε την έκδοση 6 ή νεότερη του npm, με την έκδοση 7.5.4 να αποτελεί μια αξιόπιστη επιλογή. Κατεβάστε το Node.js από το nodejs.org, το οποίο θα περιλαμβάνει αυτόματα το npm.
Εικονικά περιβάλλοντα Python: Η χρήση εικονικών περιβαλλόντων είναι βασική για τη διαχείριση εξαρτήσεων συγκεκριμένων έργων χωρίς συγκρούσεις. Μπορείτε να χρησιμοποιήσετε το ενσωματωμένο venv ή εργαλεία όπως το pipenv ή virtualenvwrapper για περισσότερες δυνατότητες. Αν χρησιμοποιείτε Windows, το virtualenvwrapper-win πακέτο παρέχει παρόμοια λειτουργικότητα.
Για να επιβεβαιώσετε τις εγκαταστάσεις σας, εκτελέστε αυτές τις εντολές στο τερματικό σας:
python --version
node --version
npm --version
Δημιουργία της δομής του έργου
Μια καλά οργανωμένη δομή έργου είναι απαραίτητη για να διατηρείτε τον κώδικα του backend και του frontend ξεχωριστό και εύχρηστο. Ξεκινήστε δημιουργώντας έναν κύριο κατάλογο για το έργο σας:
mkdir django-react-app
cd django-react-app
Μέσα σε αυτόν τον κατάλογο, δημιουργήστε δύο φακέλους: έναν για το backend του Django και έναν άλλο για το frontend του React. Αυτός ο διαχωρισμός σας επιτρέπει να συντηρείτε και να αναπτύσσετε κάθε μέρος ανεξάρτητα.
Ρυθμίστε το εικονικό περιβάλλον Python μέσα στον κατάλογο του έργου:
python -m venv venv
Ενεργοποιήστε το εικονικό περιβάλλον:
- Σε macOS/Linux:
source venv/bin/activate - Σε Windows:
venv\Scripts\activate
Αυτό το βήμα διασφαλίζει ότι όλες οι εξαρτήσεις Python για το έργο σας είναι απομονωμένες.
Εγκατάσταση των απαιτούμενων πακέτων
Με το περιβάλλον σας έτοιμο, ήρθε η ώρα να εγκαταστήσετε τα απαραίτητα πακέτα τόσο για το Django όσο και για το React.
Πακέτα back-end του Django: Ενώ το εικονικό σας περιβάλλον είναι ενεργό, εγκαταστήστε το Django και τις βιβλιοθήκες υποστήριξής του χρησιμοποιώντας το pip:
pip install django
pip install djangorestframework
pip install django-cors-headers
- Το Django διαχειρίζεται τη λογική από την πλευρά του διακομιστή, τη διαχείριση της βάσης δεδομένων και τη δρομολόγηση των URL.
- Το Django REST Framework απλοποιεί τη διαδικασία δημιουργίας RESTful APIs, διευκολύνοντας τη δημιουργία endpoints για το frontend του React.
- Το Django-cors-headers ενεργοποιεί το Cross-Origin Resource Sharing (CORS), το οποίο είναι απαραίτητο για την επικοινωνία μεταξύ του frontend του React (που εκτελείται στη θύρα 3000) και του backend του Django (που εκτελείται στη θύρα 8000).
Ρύθμιση του frontend React: Για να ρυθμίσετε το περιβάλλον React, χρησιμοποιήστε το create-react-app εργαλείο. Αυτή η εντολή αρχικοποιεί ένα έργο React και εγκαθιστά όλες τις απαραίτητες εξαρτήσεις:
npx create-react-app frontend
Αυτό θα δημιουργήσει ένα νέο έργο React σε έναν frontend κατάλογο, πλήρες με τα απαραίτητα πακέτα, εργαλεία ανάπτυξης και σενάρια κατασκευής.
Πρόσθετο πακέτο frontend: Αφού ρυθμίσετε το έργο React, μεταβείτε στον frontend κατάλογο και εγκαταστήστε το Axios, μια βιβλιοθήκη για την πραγματοποίηση αιτήσεων HTTP στο API του Django:
cd frontend
npm install axios
Σε αυτό το σημείο, το περιβάλλον ανάπτυξης σας είναι πλήρως εξοπλισμένο με Python 3.x, Django, Node.js, React και όλα τα απαραίτητα εργαλεία. Το εικονικό περιβάλλον Python διασφαλίζει ότι οι εξαρτήσεις του backend σας είναι απομονωμένες, ενώ το npm διαχειρίζεται τα πακέτα JavaScript σας ξεχωριστά. Τώρα είστε έτοιμοι να ξεκινήσετε την κατασκευή της εφαρμογής full-stack σας!
Δημιουργία του Backend με Django
Ρυθμίστε ένα backend Django με μοντέλα βάσης δεδομένων, σημεία τερματισμού API και ενσωμάτωση για ένα frontend React.
Δημιουργία έργου και εφαρμογής Django
Ξεκινήστε δημιουργώντας ένα έργο Django, το οποίο περιλαμβάνει ρυθμίσεις, διαμορφώσεις βάσης δεδομένων και επιλογές ειδικές για την εφαρμογή. Μέσα σε αυτό το έργο, θα δημιουργήσετε μια εφαρμογή Django — ένα πακέτο Python σχεδιασμένο για συγκεκριμένες εργασίες, όπως η διαχείριση δεδομένων χρηστών ή περιεχομένου.
Μεταβείτε στον ριζικό κατάλογο του έργου σας (όπου έχει ρυθμιστεί το εικονικό σας περιβάλλον) και δημιουργήστε το έργο Django:
django-admin startproject backend .
Αυτή η εντολή δημιουργεί αρχεία έργου απευθείας στον τρέχοντα κατάλογο, αποφεύγοντας τη δημιουργία ενός επιπλέον φακέλου. Θα παρατηρήσετε νέα αρχεία όπως το manage.py (για την εκτέλεση εντολών Django) και έναν backend κατάλογο που περιέχει αρχεία όπως settings.py, urls.py, asgi.py, και wsgi.py.
Στη συνέχεια, δημιουργήστε μια εφαρμογή για τη διαχείριση συγκεκριμένων λειτουργιών. Για παράδειγμα, ένα σύστημα διαχείρισης εργασιών:
python manage.py startapp tasks
Αυτό δημιουργεί έναν tasks κατάλογο με βασικά αρχεία όπως models.py, views.py, admin.py, καθώς και έναν migrations φάκελο. Φροντίστε να αποφύγετε συγκρούσεις ονομάτων με ενσωματωμένα ονόματα όπως "django" ή "test".
Καταχωρίστε την εφαρμογή στις ρυθμίσεις του έργου σας, προσθέτοντάς την στη INSTALLED_APPS λίστα στο 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', # Register your app
]
Ρύθμιση μοντέλων και σειριοποιητών
Ορίστε τη δομή των δεδομένων σας με μοντέλα Django. Για παράδειγμα, ένα απλό Task μοντέλο για την εφαρμογή διαχείρισης εργασιών μπορεί να προστεθεί στο 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
Αυτό το μοντέλο περιλαμβάνει πεδία όπως CharField για σύντομο κείμενο, TextField για μεγαλύτερο περιεχόμενο, BooleanField για τιμές «true/false» και DateTimeField για χρονικές σημάνσεις. Η Meta κλάση καθορίζει επιλογές όπως η προεπιλεγμένη σειρά ταξινόμησης.
Εφαρμόστε το μοντέλο στη βάση δεδομένων σας εκτελώντας μετακινήσεις:
python manage.py makemigrations tasks
python manage.py migrate
Για να μετατρέψετε τα δεδομένα του μοντέλου σε JSON, χρησιμοποιήστε τους σειριοποιητές του Django REST Framework. Στο tasks/serializers.py, ορίστε έναν σειριοποιητή για το 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']
Το ModelSerializer δημιουργεί αυτόματα πεδία και μεθόδους με βάση το μοντέλο. Η ρητή αναφορά των πεδίων διασφαλίζει ότι δεν θα εκθέσετε ακούσια ευαίσθητα δεδομένα.
Δημιουργία τελικών σημείων API
Το Django REST Framework απλοποιεί τη δημιουργία API. Για τυπικές λειτουργίες CRUD, χρησιμοποιήστε ViewSets με δρομολογητές για μια καθαρή, RESTful δομή.
Στο tasks/views.py, δημιουργήστε προβολές 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] # For development only
Το ModelViewSet χειρίζεται αυτόματα τις εργασίες καταχώρισης, δημιουργίας, ανάκτησης, ενημέρωσης και διαγραφής.
Ρυθμίστε τη δρομολόγηση URL στο 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)),
]
Συμπεριλάβετε αυτές τις διευθύνσεις URL στο κύριο backend/urls.py αρχείο:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('tasks.urls')),
]
Διαμόρφωση κεφαλίδων CORS
Για να επιτρέψετε στο React frontend σας (που εκτελείται στη θύρα 3000) να επικοινωνεί με το Django backend (στη θύρα 8000), διαμορφώστε το Cross-Origin Resource Sharing (CORS). Χωρίς αυτό, τα προγράμματα περιήγησης αποκλείουν τα αιτήματα διασταυρούμενης προέλευσης για λόγους ασφαλείας.
Ενημερώστε το backend/settings.py για να συμπεριλάβετε τη διαμόρφωση CORS:
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware', # Add this at the top
'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',
]
# CORS settings for development
CORS_ALLOWED_ORIGINS = [
"http://localhost:3000", # React development server
"http://127.0.0.1:3000",
]
CORS_ALLOW_CREDENTIALS = True
Για γρήγορη δοκιμή, μπορείτε να χρησιμοποιήσετε CORS_ALLOW_ALL_ORIGINS = True, αλλά ο καθορισμός επιτρεπόμενων προελεύσεων είναι ασφαλέστερος.
Δοκιμή των τελικών σημείων του API
Πριν ενσωματώσετε το frontend του React, δοκιμάστε τα σημεία τερματισμού του API για να βεβαιωθείτε ότι λειτουργούν όπως αναμένεται. Ξεκινήστε τον διακομιστή ανάπτυξης του Django:
python manage.py runserver
Πρόσβαση στο API στη διεύθυνση http://127.0.0.1:8000/api/tasks/. Χρησιμοποιήστε το API περιήγησης για να δοκιμάσετε λειτουργίες όπως αιτήματα GET και POST.
Εναλλακτικά, πραγματοποιήστε δοκιμές με το cURL ή το Postman:
# Test GET request to list tasks
curl -X GET http://127.0.0.1:8000/api/tasks/
# Test POST request to create a task
curl -X POST http://127.0.0.1:8000/api/tasks/ \
-H "Content-Type: application/json" \
-d '{"title": "Test Task", "description": "This is a test task"}'
Για αυτοματοποιημένες δοκιμές, προσθέστε περιπτώσεις δοκιμών στο 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):
# Add your assertions and test logic here
pass
Με το backend έτοιμο, είστε έτοιμοι να το συνδέσετε με το frontend του React.
Δημιουργία του Frontend με React
Για να δημιουργήσετε μια ελκυστική διεπαφή για το backend σας στο Django, θα χρησιμοποιήσετε το React για τη διαχείριση των αλληλεπιδράσεων των χρηστών — από την προβολή εργασιών έως την προσθήκη νέων.
Ρύθμιση ενός έργου React
Ξεκινήστε ρυθμίζοντας το frontend του React χρησιμοποιώντας το Create React App. Μεταβείτε στον ριζικό κατάλογο του έργου σας (όπου βρίσκεται το backend του Django) και εκτελέστε:
npx create-react-app frontend
cd frontend
Αυτή η εντολή δημιουργεί μια εφαρμογή React με βασικά αρχεία όπως το package.json, src/App.js, και public/index.html. Περιλαμβάνει επίσης εργαλεία όπως το webpack για τη δημιουργία πακέτων, το Babel για τη μεταγλώττιση JavaScript και έναν διακομιστή ανάπτυξης για δοκιμές.
Στη συνέχεια, εγκαταστήστε το Axios για τη διαχείριση των αιτήσεων HTTP προς το API του Django:
npm install axios
Το Axios απλοποιεί τις κλήσεις API, διαχειριζόμενο την ανάλυση JSON και προσφέροντας καλύτερη διαχείριση σφαλμάτων από την ενσωματωμένη fetch() . Υποστηρίζει επίσης λειτουργίες όπως τους «αναχαιτιστές» αιτήσεων και απαντήσεων.
Η δομή των φακέλων σας θα πρέπει τώρα να έχει την εξής μορφή:
project-root/
├── backend/
│ ├── manage.py
│ ├── backend/
│ └── tasks/
└── frontend/
├── package.json
├── public/
└── src/
Για να βεβαιωθείτε ότι όλα λειτουργούν, ξεκινήστε τον διακομιστή ανάπτυξης του React:
npm start
Αυτό εκκινεί την εφαρμογή στη διεύθυνση http://localhost:3000, εμφανίζοντας την προεπιλεγμένη σελίδα καλωσορίσματος του React. Διατηρήστε αυτόν τον διακομιστή σε λειτουργία κατά τη διάρκεια της ανάπτυξης — ανανεώνεται αυτόματα όταν κάνετε αλλαγές.
Δημιουργία στοιχείων React
Ας δημιουργήσουμε ένα TaskList συστατικό για την εμφάνιση εργασιών που ανακτώνται από το API του Django. Προσθέστε τα ακόλουθα στο 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. Create your first task!</p>
) : (
<ul>
{tasks.map((task) => (
<li key={task.id} className={`task-item ${task.completed ? 'completed' : ''}`}>
<div className="task-content">
<h3>{task.title}</h3>
<p>{task.description}</p>
<small>Created: {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'}
>
{task.completed ? 'Undo' : 'Complete'}
</button>
<button
onClick={() => onDeleteTask(task.id)}
className="btn-delete"
>
Delete
</button>
</div>
</li>
))}
</ul>
)}
</div>
);
};
export default TaskList;
Στη συνέχεια, δημιουργήστε ένα TaskForm συστατικό για την προσθήκη νέων εργασιών. Προσθέστε αυτό στο 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('Error adding task:', error);
} finally {
setIsSubmitting(false);
}
};
return (
<form onSubmit={handleSubmit} className="task-form">
<h2>Add New Task</h2>
<div className="form-group">
<input
type="text"
placeholder="Task title"
value={title}
onChange={(e) => setTitle(e.target.value)}
disabled={isSubmitting}
required
/>
</div>
<div className="form-group">
<textarea
placeholder="Task description (optional)"
value={description}
onChange={(e) => setDescription(e.target.value)}
disabled={isSubmitting}
rows="3"
/>
</div>
<button type="submit" disabled={isSubmitting || !title.trim()}>
{isSubmitting ? 'Adding...' : 'Add Task'}
</button>
</form>
);
};
export default TaskForm;
Για κάποια βασική μορφοποίηση, δημιουργήστε ένα src/App.css αρχείο και προσθέστε:
.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;
cursor: pointer;
}
.btn-complete { background: #28a745; color: white; }
.btn-undo { background: #ffc107; color: black; }
.btn-delete { background: #dc3545; color: white; }
Διαχείριση κατάστασης και ενσωμάτωση API
React hooks όπως useState και useEffect διευκολύνουν τη διαχείριση της κατάστασης και την αλληλεπίδραση με το backend του Django. Για να συγκεντρώσετε τις κλήσεις API, δημιουργήστε ένα αρχείο υπηρεσίας src/services/api.js:
import axios from 'axios';
const API_BASE_URL = 'http://127.0.0.1:8000/api';
const api = axios.create({
baseURL: API_BASE_URL,
headers: {
'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;
Τέλος, ενσωματώστε τα πάντα στο 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);
}
};
// Additional methods for adding, updating, and deleting tasks would go here
}
Με αυτή τη ρύθμιση, το frontend του React είναι έτοιμο να χειρίζεται εργασίες διαδραστικά, ενώ επικοινωνεί απρόσκοπτα με το backend του Django.

Έχετε κουραστεί από τις αργές εγκαταστάσεις ή τα όρια εύρους ζώνης; Η FDC Servers προσφέρει άμεση αποκλειστική ισχύ, παγκόσμια κάλυψη και ευέλικτα πακέτα σχεδιασμένα για κάθε κλίμακα. Είστε έτοιμοι για αναβάθμιση;
Απελευθερώστε την απόδοση τώραΣύνδεση του Django με το React
Τώρα που το backend και το frontend σας λειτουργούν, το επόμενο βήμα είναι να εξασφαλίσετε την ομαλή επικοινωνία μεταξύ τους. Αυτό περιλαμβάνει τη ρύθμιση των τελικών σημείων API, τη διαχείριση των αιτημάτων και την αντιμετώπιση τυχόν προβλημάτων ενσωμάτωσης.
Ρύθμιση των URL API στο React
Η εφαρμογή σας στο React πρέπει να γνωρίζει πού βρίσκονται τα σημεία τερματισμού του API του Django. Για να το επιτύχετε αυτό, ενημερώστε το src/services/api.js αρχείο με ρυθμίσεις ειδικές για το περιβάλλον:
import axios from 'axios';
// Determine API base URL based on environment
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,
headers: {
'Content-Type': 'application/json',
},
timeout: 10000, // 10 second timeout
});
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;
Για την παραγωγή, προσθέστε ένα .env αρχείο στον ριζικό κατάλογο του έργου σας στο React με το ακόλουθο περιεχόμενο:
REACT_APP_API_URL=https://your-production-domain.com/api
Αυτή η ρύθμιση διασφαλίζει ότι η εφαρμογή σας στο React μπορεί να αλληλεπιδρά απρόσκοπτα με το backend του Django, είτε βρίσκεστε σε τοπικό περιβάλλον ανάπτυξης είτε πραγματοποιείτε ανάπτυξη σε περιβάλλον παραγωγής. Με τα τελικά σημεία του API διαμορφωμένα, είστε έτοιμοι να ανακτήσετε και να επεξεργαστείτε δεδομένα από το backend.
Λήψη δεδομένων από το backend
Μόλις οριστεί η διαμόρφωση του API, μπορείτε να εκτελέσετε λειτουργίες CRUD για τη διαχείριση δεδομένων μεταξύ React και Django. Ενημερώστε 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);
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('Error adding task:', err);
throw err; // Re-throw to let TaskForm handle the error
}
};
const handleToggleComplete = async (taskId, completed) => {
try {
const taskToUpdate = tasks.find(task => task.id === taskId);
const updatedTaskData = { ...taskToUpdate, completed };
const response = await taskAPI.updateTask(taskId, updatedTaskData);
setTasks(prevTasks =>
prevTasks.map(task =>
task.id === taskId ? response.data : task
)
);
} catch (err) {
console.error('Error updating task:', err);
}
};
const handleDeleteTask = async (taskId) => {
if (!window.confirm('Are you sure you want to delete this task?')) {
return;
}
try {
await taskAPI.deleteTask(taskId);
setTasks(prevTasks => prevTasks.filter(task => task.id !== taskId));
} catch (err) {
console.error('Error deleting task:', err);
}
};
if (loading) {
return <div className="loading">Loading tasks...</div>;
}
return (
<div className="App">
<header className="App-header">
<h1>Task Manager</h1>
</header>
<main className="container">
{error && <div className="error-message">{error}</div>}
<TaskForm onAddTask={handleAddTask} />
<TaskList
tasks={tasks}
onToggleComplete={handleToggleComplete}
onDeleteTask={handleDeleteTask}
/>
</main>
</div>
);
}
export default App;
Αυτός ο κώδικας χειρίζεται τη δημιουργία εργασιών, τις ενημερώσεις, τις διαγραφές και τη διαχείριση σφαλμάτων. Η διεπαφή χρήστη ενημερώνεται αμέσως για μια ομαλή εμπειρία χρήστη, ενώ τα σφάλματα αντιμετωπίζονται ομαλά με την αναίρεση των αλλαγών ή την εμφάνιση κατάλληλων μηνυμάτων.
Δοκιμή και εντοπισμός σφαλμάτων στη σύνδεση
Ένα από τα πιο συνηθισμένα εμπόδια κατά τη σύνδεση του Django με το React είναι η αντιμετώπιση σφαλμάτων CORS (Cross-Origin Resource Sharing). Αυτά προκύπτουν επειδή τα προγράμματα περιήγησης αποκλείουν αιτήματα μεταξύ διαφορετικών πηγών για λόγους ασφαλείας. Κατά τη διάρκεια της ανάπτυξης, το React εκτελείται συνήθως στο localhost:3000, ενώ το Django λειτουργεί στο localhost:8000, δημιουργώντας έτσι ένα σενάριο διασταυρούμενης προέλευσης.
Για να αντιμετωπίσετε τα προβλήματα CORS, βεβαιωθείτε ότι έχετε ρυθμίσει τις κεφαλίδες CORS στις ρυθμίσεις του Django, όπως περιγράφεται στην ενότητα «Ρύθμιση κεφαλίδων CORS». Αφού κάνετε τις αλλαγές, επανεκκινήστε τον διακομιστή Django για να εφαρμοστούν.
Ακολουθούν μερικά συνηθισμένα σφάλματα αιτήσεων API και οι λύσεις τους:
- HTTP 400 (Bad Request): Αυτό συνήθως σημαίνει ότι κάποια απαιτούμενα δεδομένα λείπουν ή είναι εσφαλμένα στο περιεχόμενο του αιτήματος. Για παράδειγμα, τον Νοέμβριο του 2023, η FintanMi αντιμετώπισε ένα σφάλμα 400 κατά τη δημιουργία μιας κοινότητας σε ένα έργο Django REST Framework και React, επειδή το
ownerπεδίο έλειπε από το αίτημα. Ελέγχετε πάντα διπλά ότι το frontend σας στέλνει όλα τα απαιτούμενα πεδία που αναμένουν τα μοντέλα του Django. - HTTP 405 (Method Not Allowed): Αυτό συμβαίνει όταν το endpoint του API δεν υποστηρίζει τη μέθοδο HTTP που χρησιμοποιείται. Για παράδειγμα, το FintanMi ανέφερε ένα σφάλμα 405 κατά την προσπάθεια διαγραφής μιας ανάρτησης, το οποίο επιλύθηκε με την ενημέρωση της προβολής (view) του Django από
generics.RetrieveUpdateAPIViewσεgenerics.RetrieveUpdateDestroyAPIViewώστε να περιλαμβάνει υποστήριξη γιαDELETEαιτήματα.
Εκτέλεση και δοκιμή της εφαρμογής
Αφού συνδέσετε το backend Django και το frontend React, ήρθε η ώρα να εκκινήσετε και τους δύο διακομιστές ανάπτυξης και να δοκιμάσετε την εφαρμογή. Αυτό περιλαμβάνει την ταυτόχρονη εκτέλεση δύο διακομιστών και τη διασφάλιση ότι όλα λειτουργούν ομαλά μεταξύ τους.
Εκκίνηση των διακομιστών ανάπτυξης
Για να εκτελέσετε την εφαρμογή Django-React, θα χρειαστείτε δύο παράθυρα τερματικού — ένα για κάθε διακομιστή. Αυτή η ρύθμιση επιτρέπει στο backend και στο frontend να λειτουργούν ανεξάρτητα, ενώ επικοινωνούν μέσω κλήσεων API.
Εκκίνηση του διακομιστή backend του Django:
- Ανοίξτε το πρώτο παράθυρο τερματικού και μεταβείτε στον ριζικό κατάλογο του έργου Django.
Ενεργοποιήστε το εικονικό περιβάλλον Python:
source venv/bin/activateΕκκινήστε τον διακομιστή ανάπτυξης Django:
python manage.py runserverΟ διακομιστής θα είναι διαθέσιμος στη διεύθυνση
http://127.0.0.1:8000/.
Εκκίνηση του διακομιστή frontend του React:
Ανοίξτε ένα δεύτερο παράθυρο τερματικού και μεταβείτε στον κατάλογο του έργου σας στο React:
cd frontendΕκκινήστε τον διακομιστή ανάπτυξης του React:
npm startΑυτό θα ανοίξει αυτόματα ένα παράθυρο του προγράμματος περιήγησης στη διεύθυνση
http://localhost:3000/.
Μόλις τρέχουν και οι δύο διακομιστές, μπορείτε να αρχίσετε να δοκιμάζετε τη λειτουργικότητα της εφαρμογής σας.
Δοκιμή της πλήρους λειτουργικότητας της εφαρμογής
Με τους διακομιστές σε λειτουργία και τα CORS και τα τελικά σημεία API σωστά διαμορφωμένα, ήρθε η ώρα να επαληθεύσετε τη ροή δεδομένων μεταξύ του frontend και του backend.
Επαλήθευση API backend:
Δοκιμάστε απευθείας τα τελικά σημεία API του Django μεταβαίνοντας στη διεύθυνση:
http://localhost:8000/api/tasksΑυτό θα πρέπει να εμφανίσει τη διεπαφή API του Django REST Framework, όπου μπορείτε να εκτελέσετε λειτουργίες CREATE και READ.
Αποκτήστε πρόσβαση στη διεπαφή διαχείρισης του Django στη διεύθυνση:
http://localhost:8000/adminΣυνδεθείτε με τα διαπιστευτήρια του superuser για να δημιουργήσετε, να επεξεργαστείτε ή να διαγράψετε εργασίες. Μπορείτε επίσης να δοκιμάσετε λειτουργίες UPDATE και DELETE μεταβαίνοντας στη διεύθυνση:
http://localhost:8000/api/tasks/{id}
Δοκιμή ενσωμάτωσης frontend-backend:
- Ανοίξτε την εφαρμογή React σας στη διεύθυνση
http://localhost:3000και βεβαιωθείτε ότι φορτώνεται σωστά, εμφανίζοντας εργασίες από το backend του Django. - Δοκιμάστε κάθε λειτουργία CRUD μέσω της διεπαφής React:
- Προσθέστε μια νέα εργασία και βεβαιωθείτε ότι εμφανίζεται τόσο στο περιβάλλον χρήστη του React όσο και στο backend.
- Επεξεργαστείτε μια υπάρχουσα εργασία και βεβαιωθείτε ότι οι αλλαγές αποθηκεύονται.
- Διαγράψτε μια εργασία και βεβαιωθείτε ότι έχει αφαιρεθεί τόσο από το frontend όσο και από τη βάση δεδομένων.
Εάν η εφαρμογή σας περιλαμβάνει φίλτρα ή άλλες λειτουργίες, δοκιμάστε τις διεξοδικά για να βεβαιωθείτε ότι οι εργασίες εμφανίζονται όπως αναμένεται.
Επίλυση κοινών προβλημάτων
Εάν αντιμετωπίσετε οποιαδήποτε προβλήματα κατά τη διάρκεια των δοκιμών, ακολουθούν μερικές συνήθεις λύσεις που μπορείτε να δοκιμάσετε.
Σφάλματα σύνδεσης API:
- Βεβαιωθείτε ότι και οι δύο διακομιστές λειτουργούν στις αντίστοιχες θύρες τους: ο Django στη
http://localhost:8000και το React στηhttp://localhost:3000. - Χρησιμοποιήστε τα εργαλεία προγραμματιστή του προγράμματος περιήγησης (καρτέλα «Δίκτυο») για να εντοπίσετε κωδικούς κατάστασης HTTP όπως 404 ή 500.
Ελέγξτε τη
proxyρύθμιση στο αρχείοpackage.json:"proxy": "http://localhost:8000"Εάν κάνετε αλλαγές, επανεκκινήστε τον διακομιστή React.
Προβλήματα εκκίνησης διακομιστή:
Εάν ο διακομιστής Django δεν ξεκινά, ελέγξτε αν λείπουν μεταφορές δεδομένων:
python manage.py makemigrations python manage.py migrateΓια προβλήματα με τον διακομιστή React, δοκιμάστε να επανεγκαταστήσετε τις εξαρτήσεις:
npm install
Προβλήματα ροής δεδομένων:
- Χρησιμοποιήστε τα εργαλεία προγραμματιστή του προγράμματος περιήγησης για να ελέγξετε τα αιτήματα δικτύου και τα σφάλματα της κονσόλας.
- Προσθέστε δηλώσεις εντοπισμού σφαλμάτων, όπως
console.log()στο React ήprintστις προβολές του Django, για να παρακολουθήσετε τη ροή δεδομένων. - Ελέγξτε ξανά ότι οι διευθύνσεις URL του API στην εφαρμογή σας στο React ταιριάζουν ακριβώς με τα πρότυπα διευθύνσεων URL του Django, συμπεριλαμβανομένων των τελικών κάθετων (π.χ.,
/api/tasks/).
Σύνοψη και επόμενα βήματα
Δημιουργήσατε μια διαδικτυακή εφαρμογή που συνδυάζει το Django και το React, αποκτώντας έτσι μια στέρεη εισαγωγή στην ανάπτυξη full-stack. Αυτό το έργο αναδεικνύει βασικές έννοιες, όπως ο διαχωρισμός του backend από το frontend, η εκτέλεση λειτουργιών CRUD και η διαχείριση αιτημάτων διασταυρούμενης προέλευσης (cross-origin) χρησιμοποιώντας ρυθμίσεις CORS. Κατά τη διάρκεια της διαδικασίας, εργαστήκατε με το Django REST Framework για τη δημιουργία API και χρησιμοποιήσατε hooks του React για τη διαχείριση της κατάστασης — δεξιότητες που επιτρέπουν την ομαλή ενσωμάτωση μεταξύ αυτών των δύο ισχυρών εργαλείων.
Αναβαθμίζοντας την εφαρμογή σας
Υπάρχει άφθονος χώρος για την επέκταση της λειτουργικότητας της εφαρμογής σας. Για παράδειγμα, μπορείτε να προσθέσετε έλεγχο ταυτότητας JWT χρησιμοποιώντας το Django REST Framework για την προστασία των δεδομένων των χρηστών και της πρόσβασης στο API. Αυτό θα σας επιτρέψει να προσφέρετε λειτουργίες ειδικά προσαρμοσμένες για κάθε χρήστη και εξατομικευμένες εμπειρίες.
Εάν η εφαρμογή σας χρειάζεται ενημερώσεις σε πραγματικό χρόνο, εξετάστε το ενδεχόμενο να χρησιμοποιήσετε το Django Channels για να ενεργοποιήσετε την υποστήριξη WebSocket. Αυτό είναι ιδανικό για λειτουργίες όπως ζωντανά ταμπλό, συστήματα συνομιλίας ή ειδοποιήσεις, μετατρέποντας την εφαρμογή σας σε μια πιο δυναμική και διαδραστική πλατφόρμα.
Καθώς η εφαρμογή σας αναπτύσσεται, η προηγμένη οπτικοποίηση δεδομένων αποκτά σημασία. Συνδυάζοντας τις δυνατότητες απόδοσης του React με την αποτελεσματική ανάκτηση δεδομένων από το backend, θα μπορείτε να διαχειρίζεστε και να εμφανίζετε αποτελεσματικά σύνθετα σύνολα δεδομένων.
Προετοιμασία για την παραγωγή
Κατά την προετοιμασία της εφαρμογής σας για παραγωγή, εστιάστε στην ανάπτυξη, την ασφάλεια και την απόδοση. Ενώ η τρέχουσα ρύθμιση είναι εξαιρετική για τοπική ανάπτυξη, τα περιβάλλοντα παραγωγής απαιτούν επιπλέον βήματα. Αυτά περιλαμβάνουν τη ρύθμιση μεταβλητών περιβάλλοντος, τη βελτιστοποίηση της βάσης δεδομένων σας και την υλοποίηση ισχυρών μηχανισμών διαχείρισης σφαλμάτων.
Αυτές οι βελτιώσεις βασίζονται στις δεξιότητες που έχετε ήδη αναπτύξει — όπως ο σχεδιασμός API, η αρχιτεκτονική βασισμένη σε συστατικά και η ολοκληρωμένη ενσωμάτωση. Με την εξειδίκευση σε αυτές τις προηγμένες τεχνικές, θα είστε πλήρως εξοπλισμένοι για να αντιμετωπίσετε έργα επιχειρηματικού επιπέδου και να συνεχίσετε να εξελίσσεστε ως προγραμματιστής ιστού.
Συχνές ερωτήσεις
Ποια είναι τα πλεονεκτήματα της χρήσης του Django για το backend και του React για το frontend κατά την ανάπτυξη μιας διαδικτυακής εφαρμογής;
Η χρήση του Django για το backend και του React για το frontend δημιουργεί έναν ισχυρό συνδυασμό για την ανάπτυξη σύγχρονων διαδικτυακών εφαρμογών. Το Django παρέχει ένα σταθερό πλαίσιο γεμάτο εργαλεία που βελτιστοποιούν την ανάπτυξη του backend, ενώ το React ξεχωρίζει στη δημιουργία δυναμικών και διαδραστικών διεπαφών χρήστη.
Αυτός ο συνδυασμός προάγει έναν σαφή διαχωρισμό αρμοδιοτήτων, ο οποίος συμβάλλει στη διατήρηση της οργάνωσης του κώδικα και στη διευκόλυνση της επέκτασής του με την πάροδο του χρόνου. Η δομή του React, που βασίζεται σε συστατικά, ενθαρρύνει την επαναχρησιμοποίηση στοιχείων της διεπαφής χρήστη, ενώ το REST Framework του Django απλοποιεί τη διαδικασία δημιουργίας API, εξασφαλίζοντας ομαλή επικοινωνία μεταξύ του frontend και του backend. Μαζί, προσφέρουν μια γρήγορη, αποδοτική και επικεντρωμένη στον χρήστη προσέγγιση στην ανάπτυξη εφαρμογών.
Πώς μπορώ να επιλύσω προβλήματα CORS κατά τη σύνδεση ενός frontend React με ένα backend Django;
Για την αντιμετώπιση προβλημάτων CORS μεταξύ ενός frontend React και ενός backend Django, το django-cors-headers πακέτο αποτελεί μια εύχρηστη λύση. Πρώτα, εγκαταστήστε το χρησιμοποιώντας το pip. Στη συνέχεια, στο αρχείο settings.py αρχείο, προσθέστε 'corsheaders' στη INSTALLED_APPS λίστα. Μετά από αυτό, συμπεριλάβετε 'corsheaders.middleware.CorsMiddleware' στην αρχή της MIDDLEWARE λίστας για να εξασφαλίσετε τη σωστή σειρά εκτέλεσης του middleware.
Κατά τη διάρκεια της ανάπτυξης, μπορείτε να απλοποιήσετε τη διαδικασία ορίζοντας CORS_ORIGIN_ALLOW_ALL = True στο αρχείο settings.py. Αυτό επιτρέπει αιτήματα από οποιαδήποτε προέλευση. Ωστόσο, σε ένα περιβάλλον παραγωγής, είναι πολύ πιο ασφαλές να ορίσετε συγκεκριμένους αξιόπιστους τομείς χρησιμοποιώντας τη CORS_ALLOWED_ORIGINS ρύθμιση. Αυτή η προσέγγιση συμβάλλει στη διατήρηση αυστηρότερης ασφάλειας.
Με αυτή τη διαμόρφωση, η εφαρμογή σας στο React μπορεί να αλληλεπιδρά ομαλά με τα API του Django, παραμένοντας ταυτόχρονα συμβατή με τις απαιτήσεις του CORS.
Πώς μπορώ να προετοιμάσω τις εφαρμογές μου Django και React για ανάπτυξη σε περιβάλλον παραγωγής;
Για να προετοιμάσετε τις εφαρμογές Django και React για παραγωγή, ξεκινήστε προσαρμόζοντας τις ρυθμίσεις του Django για μια ασφαλή εγκατάσταση. Αυτό περιλαμβάνει τη ρύθμιση DEBUG σε False και τον καθορισμό του ALLOWED_HOSTS για να ελέγξετε ποιοι τομείς μπορούν να έχουν πρόσβαση στην εφαρμογή σας. Αυτές οι αλλαγές είναι απαραίτητες για την προστασία της εφαρμογής σας σε ένα περιβάλλον παραγωγής.
Στη συνέχεια, επιλέξτε μια αξιόπιστη πλατφόρμα φιλοξενίας για το backend του Django και τα στατικά αρχεία σας. Βεβαιωθείτε ότι η υποδομή σας έχει σχεδιαστεί για να διαχειρίζεται την επισκεψιμότητα και τις απαιτήσεις σε επίπεδο παραγωγής. Για το frontend του React, χρησιμοποιήστε τα κατάλληλα εργαλεία δημιουργίας για να δημιουργήσετε μια βελτιστοποιημένη έκδοση παραγωγής.
Μόλις η εφαρμογή React σας είναι έτοιμη, ρυθμίστε έναν διακομιστή ιστού όπως το Nginx για να εξυπηρετεί τόσο το frontend του React όσο και το backend του Django. Η σωστή διαμόρφωση του διακομιστή εξασφαλίζει ότι η εφαρμογή σας λειτουργεί αποτελεσματικά και παρέχει μια απρόσκοπτη εμπειρία στους χρήστες.
Πριν τη θέσετε σε λειτουργία, δοκιμάστε διεξοδικά την εφαρμογή σας στο περιβάλλον παραγωγής. Αυτό το βήμα βοηθά στον εντοπισμό και την επίλυση τυχόν προβλημάτων, διασφαλίζοντας ότι η εφαρμογή σας θα λειτουργεί αξιόπιστα μετά την κυκλοφορία της.

Πώς να φιλοξενήσετε μοντέλα Ollama AI σε αποκλειστικούς διακομιστές
Μάθετε πώς να φιλοξενείτε μοντέλα Ollama AI σε αποκλειστικούς διακομιστές για να διατηρήσετε την ασφάλεια των δεδομένων, να εξασφαλίσετε επεκτασιμότητα και να βελτιώσετε την απόδοση.
5 λεπτά ανάγνωσης - 8 Σεπτεμβρίου 2025
Πώς να εγκαταστήσετε και να χρησιμοποιήσετε το Redis σε ένα VPS
9 λεπτά ανάγνωσης - 7 Ιανουαρίου 2026

Έχετε ερωτήσεις ή χρειάζεστε μια προσαρμοσμένη λύση
Ευέλικτες επιλογές
Παγκόσμια εμβέλεια
Άμεση ανάπτυξη
Ευέλικτες επιλογές
Παγκόσμια εμβέλεια
Άμεση ανάπτυξη
