Creare un'applicazione Web Python con Django

Django è un framework web Python di alto livello che incoraggia uno sviluppo rapido e un design pulito e pragmatico. Si occupa di gran parte della seccatura dello sviluppo web, consentendo agli sviluppatori di concentrarsi sulla scrittura dell'app anziché reinventare la ruota. Questo articolo ti guiderà nella creazione di una semplice applicazione web utilizzando Django.

Introduzione a Django

Prima di poter iniziare a creare un'applicazione web Django, devi installare Django. Puoi installare Django usando pip, l'installatore di pacchetti Python:

pip install django

Una volta installato Django, puoi creare un nuovo progetto Django eseguendo il seguente comando nel terminale o nel prompt dei comandi:

django-admin startproject myproject

Questo comando crea una nuova directory chiamata myproject con i file necessari per iniziare. Vai a questa directory:

cd myproject

Creazione di un'applicazione Django

All'interno del tuo progetto Django, puoi creare singole applicazioni che gestiscono funzionalità specifiche. Ad esempio, potresti avere un'app per l'autenticazione utente, un'altra per i post del blog, ecc. Per creare un'app, esegui il seguente comando:

python manage.py startapp myapp

Questo crea una nuova directory chiamata myapp contenente file come models.py, views.py e tests.py, tra gli altri. Definirai i tuoi modelli, viste e template all'interno di questa app.

Definizione dei modelli

I modelli Django definiscono la struttura dei tuoi dati e sono rappresentati come classi Python. Li definisci nel file models.py all'interno della tua app:

from django.db import models

class BlogPost(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

Una volta definiti i modelli, è necessario creare tabelle di database per essi. Eseguire i seguenti comandi per applicare le migrazioni:

python manage.py makemigrations
python manage.py migrate

Creazione di viste e modelli

Le viste Django gestiscono la logica della tua applicazione e interagiscono con i modelli per rendere i dati nei template. Una vista semplice può essere creata nel file views.py:

from django.shortcuts import render
from .models import BlogPost

def home(request):
    posts = BlogPost.objects.all()
    return render(request, 'home.html', {'posts': posts})

Il codice sopra riportato recupera tutti i post del blog dal database e li passa a un modello denominato home.html. Il modello home.html è archiviato in una directory denominata templates all'interno della tua app:

<!DOCTYPE html>
<html>
<head>
    <title>Blog Home</title>
</head>
<body>
    <h1>Blog Posts</h1>
    <ul>
    {% for post in posts %}
        <li>{{ post.title }} - {{ post.created_at }}</li>
    {% endfor %}
    </ul>
</body>
</html>

Configurazione degli URL

Per collegare le viste agli URL, devi definire i pattern URL. Crea un file denominato urls.py nella directory della tua app e aggiungi il seguente codice:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]

Quindi, includi i modelli URL di questa app nel file urls.py del progetto principale:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myapp.urls')),
]

Esecuzione del server di sviluppo

Dopo aver impostato modelli, viste, template e URL, puoi eseguire il server di sviluppo Django per vedere la tua applicazione web in azione:

python manage.py runserver

Apri un browser web e vai su http://127.0.0.1:8000/ per vedere l'esecuzione della tua applicazione web Django.

Conclusione

Django semplifica la creazione di applicazioni web potenti e robuste con Python. Questa guida ha trattato le basi per impostare un progetto Django, creare un'app, definire modelli, creare viste e template, configurare URL ed eseguire il server di sviluppo. Con Django, puoi creare applicazioni web scalabili e gestibili con facilità.