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.

  1. Configuració del Projecte Django

Instal·lació de Django

Primer, necessitem instal·lar Django. Pots fer-ho utilitzant pip:

pip install django

Creació d'un Nou Projecte

Un cop instal·lat Django, podem crear un nou projecte utilitzant el següent comandament:

django-admin startproject myproject

Això crearà una estructura de directoris com la següent:

myproject/
    manage.py
    myproject/
        __init__.py
        settings.py
        urls.py
        wsgi.py

Executar el Servidor de Desenvolupament

Per assegurar-nos que tot està configurat correctament, podem executar el servidor de desenvolupament:

cd myproject
python manage.py runserver

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/.

  1. 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:

python manage.py startapp myapp

Això crearà una estructura de directoris com la següent:

myapp/
    __init__.py
    admin.py
    apps.py
    models.py
    tests.py
    views.py

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:

INSTALLED_APPS = [
    ...
    'myapp',
]

  1. 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:

python manage.py makemigrations
python manage.py migrate

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')),
]

  1. 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ó:

from django.contrib import admin
from .models import Article

admin.site.register(Article)

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

  1. Crear un nou projecte Django.
  2. Crear una aplicació anomenada tasks.
  3. Definir un model Task amb els camps title i completed.
  4. Crear vistes per llistar, crear i esborrar tasques.
  5. Crear plantilles per mostrar les tasques.
  6. 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

Mòdul 2: Estructures de Control

Mòdul 3: Funcions i Mòduls

Mòdul 4: Estructures de Dades

Mòdul 5: Programació Orientada a Objectes

Mòdul 6: Gestió de Fitxers

Mòdul 7: Gestió d'Errors i Excepcions

Mòdul 8: Temes Avançats

Mòdul 9: Proves i Depuració

Mòdul 10: Desenvolupament Web amb Python

Mòdul 11: Ciència de Dades amb Python

Mòdul 12: Projecte Final

© Copyright 2024. Tots els drets reservats