En aquest tema, aprendrem a construir aplicacions web utilitzant el framework Django. Django és un framework de desenvolupament web d'alt nivell per a Python que permet desenvolupar aplicacions ràpidament i amb un codi net i pragmàtic. Django inclou moltes funcionalitats integrades que faciliten la creació d'aplicacions web robustes i escalables.
Objectius
- Entendre l'estructura d'un projecte Django.
- Configurar un projecte Django.
- Crear models, vistes i plantilles.
- Gestionar les URL i les rutes.
- Utilitzar el sistema d'administració de Django.
- Configuració del Projecte Django
Instal·lació de Django
Primer, necessitem instal·lar Django. Pots fer-ho utilitzant pip:
Creació d'un Nou Projecte
Un cop instal·lat Django, podem crear un nou projecte utilitzant el següent comandament:
Això crearà una estructura de directoris com la següent:
Executar el Servidor de Desenvolupament
Per assegurar-nos que tot està configurat correctament, podem executar el servidor de desenvolupament:
Si tot està correcte, hauríem de veure un missatge indicant que el servidor està funcionant i podem accedir a la nostra aplicació a http://127.0.0.1:8000/
.
- Creació d'una Aplicació Django
Crear una Nova Aplicació
Django organitza el codi en aplicacions. Per crear una nova aplicació dins del nostre projecte, utilitzem el següent comandament:
Això crearà una estructura de directoris com la següent:
Configurar l'Aplicació
Perquè Django reconegui la nostra nova aplicació, hem d'afegir-la a la llista INSTALLED_APPS
en el fitxer settings.py
del nostre projecte:
- Models, Vistes i Plantilles
Models
Els models en Django defineixen l'estructura de les dades de la nostra aplicació. Creem un model en el fitxer models.py
de la nostra aplicació:
from django.db import models class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() published_date = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title
Migracions
Després de definir els models, hem de crear i aplicar les migracions per actualitzar la base de dades:
Vistes
Les vistes en Django gestionen la lògica de la nostra aplicació. Creem una vista en el fitxer views.py
de la nostra aplicació:
from django.shortcuts import render from .models import Article def article_list(request): articles = Article.objects.all() return render(request, 'article_list.html', {'articles': articles})
Plantilles
Les plantilles defineixen com es presenten les dades als usuaris. Creem una plantilla article_list.html
en un directori templates
dins de la nostra aplicació:
<!DOCTYPE html> <html> <head> <title>Articles</title> </head> <body> <h1>Articles</h1> <ul> {% for article in articles %} <li>{{ article.title }} - {{ article.published_date }}</li> {% endfor %} </ul> </body> </html>
URL i Rutes
Finalment, hem de definir les rutes per accedir a les nostres vistes. Creem un fitxer urls.py
dins de la nostra aplicació:
from django.urls import path from . import views urlpatterns = [ path('', views.article_list, name='article_list'), ]
I afegim aquesta configuració al fitxer urls.py
del nostre projecte:
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('admin/', admin.site.urls), path('', include('myapp.urls')), ]
- Sistema d'Administració de Django
Django inclou un sistema d'administració molt potent que ens permet gestionar les dades de la nostra aplicació. Per utilitzar-lo, hem de registrar els nostres models en el fitxer admin.py
de la nostra aplicació:
Ara podem accedir a l'administració a http://127.0.0.1:8000/admin/
i gestionar els nostres articles.
Exercici Pràctic
Objectiu
Crear una aplicació Django que permeti gestionar una llista de tasques.
Passos
- Crear un nou projecte Django.
- Crear una aplicació anomenada
tasks
. - Definir un model
Task
amb els campstitle
icompleted
. - Crear vistes per llistar, crear i esborrar tasques.
- Crear plantilles per mostrar les tasques.
- Configurar les URL per accedir a les vistes.
Solució
models.py
from django.db import models class Task(models.Model): title = models.CharField(max_length=100) completed = models.BooleanField(default=False) def __str__(self): return self.title
views.py
from django.shortcuts import render, redirect from .models import Task def task_list(request): tasks = Task.objects.all() return render(request, 'task_list.html', {'tasks': tasks}) def add_task(request): if request.method == 'POST': title = request.POST.get('title') Task.objects.create(title=title) return redirect('task_list') return render(request, 'add_task.html') def delete_task(request, task_id): task = Task.objects.get(id=task_id) task.delete() return redirect('task_list')
templates/task_list.html
<!DOCTYPE html> <html> <head> <title>Tasques</title> </head> <body> <h1>Llista de Tasques</h1> <ul> {% for task in tasks %} <li>{{ task.title }} - {{ task.completed }}</li> <a href="{% url 'delete_task' task.id %}">Esborrar</a> {% endfor %} </ul> <a href="{% url 'add_task' %}">Afegir Tasca</a> </body> </html>
templates/add_task.html
<!DOCTYPE html> <html> <head> <title>Afegir Tasca</title> </head> <body> <h1>Afegir Tasca</h1> <form method="post"> {% csrf_token %} <input type="text" name="title" placeholder="Títol de la tasca"> <button type="submit">Afegir</button> </form> </body> </html>
urls.py
from django.urls import path from . import views urlpatterns = [ path('', views.task_list, name='task_list'), path('add/', views.add_task, name='add_task'), path('delete/<int:task_id>/', views.delete_task, name='delete_task'), ]
Conclusió
En aquest tema, hem après a construir una aplicació web bàsica utilitzant Django. Hem cobert la configuració del projecte, la creació de models, vistes i plantilles, la gestió de les URL i l'ús del sistema d'administració de Django. Amb aquests coneixements, estàs preparat per desenvolupar aplicacions web més complexes i robustes amb Django.
Curs de Programació en Python
Mòdul 1: Introducció a Python
- Introducció a Python
- Configuració de l'Entorn de Desenvolupament
- Sintaxi de Python i Tipus de Dades Bàsics
- Variables i Constants
- Entrada i Sortida Bàsiques
Mòdul 2: Estructures de Control
Mòdul 3: Funcions i Mòduls
- Definició de Funcions
- Arguments de Funció
- Funcions Lambda
- Mòduls i Paquets
- Visió General de la Biblioteca Estàndard
Mòdul 4: Estructures de Dades
Mòdul 5: Programació Orientada a Objectes
Mòdul 6: Gestió de Fitxers
- Lectura i Escriptura de Fitxers
- Treballant amb Fitxers CSV
- Gestió de Dades JSON
- Operacions amb Fitxers i Directoris
Mòdul 7: Gestió d'Errors i Excepcions
Mòdul 8: Temes Avançats
- Decoradors
- Generadors
- Gestors de Context
- Concurrència: Fils i Processos
- Asyncio per a Programació Asíncrona
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries amb unittest
- Desenvolupament Guiat per Proves
- Tècniques de Depuració
- Ús de pdb per a la Depuració
Mòdul 10: Desenvolupament Web amb Python
- Introducció al Desenvolupament Web
- Conceptes Bàsics del Framework Flask
- Construcció d'APIs REST amb Flask
- Introducció a Django
- Construcció d'Aplicacions Web amb Django
Mòdul 11: Ciència de Dades amb Python
- Introducció a la Ciència de Dades
- NumPy per al Càlcul Numèric
- Pandas per a la Manipulació de Dades
- Matplotlib per a la Visualització de Dades
- Introducció al Machine Learning amb scikit-learn