Introducció

En aquest tema, aprendrem com Django maneja les sol·licituds HTTP mitjançant l'enrutament d'URL i les vistes. Aquest és un concepte fonamental per a qualsevol aplicació web, ja que defineix com les sol·licituds dels usuaris es mapejen a les funcions que generen les respostes.

Objectius

  • Comprendre el sistema d'enrutament d'URL de Django.
  • Aprendre a crear vistes en Django.
  • Configurar URL per a les vistes.
  • Entendre la relació entre URL, vistes i plantilles.

Enrutament d'URL

Què és l'enrutament d'URL?

L'enrutament d'URL és el procés de mapejar les sol·licituds d'URL a les vistes corresponents. En Django, això es fa mitjançant el fitxer urls.py.

Configuració del fitxer urls.py

Cada projecte Django té un fitxer urls.py principal que es troba a la carpeta del projecte. Aquest fitxer conté una llista de patrons d'URL i les vistes associades.

Exemple de urls.py:

# project/urls.py

from django.contrib import admin
from django.urls import path
from myapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name='home'),
    path('about/', views.about, name='about'),
]

Explicació del codi

  • from django.urls import path: Importa la funció path que s'utilitza per definir patrons d'URL.
  • from myapp import views: Importa les vistes des de l'aplicació myapp.
  • urlpatterns: És una llista de patrons d'URL. Cada patró mapeja una URL a una vista.

Patrons d'URL

Els patrons d'URL es defineixen utilitzant la funció path. Aquesta funció pren tres arguments principals:

  1. Ruta: La cadena d'URL que es vol mapejar.
  2. Vista: La funció de vista que es cridarà quan es coincideixi amb la ruta.
  3. Nom: Un nom opcional per al patró d'URL, que es pot utilitzar per referenciar-lo en altres llocs del codi.

Vistes

Què és una vista?

Una vista és una funció o classe en Django que pren una sol·licitud web i retorna una resposta web. Les vistes poden retornar HTML, JSON, XML, o qualsevol altre tipus de resposta.

Creació de vistes

Les vistes es defineixen en el fitxer views.py de l'aplicació. Vegem alguns exemples de vistes.

Exemple de vistes:

# myapp/views.py

from django.http import HttpResponse
from django.shortcuts import render

def home(request):
    return HttpResponse("Benvingut a la pàgina principal!")

def about(request):
    return HttpResponse("Aquesta és la pàgina sobre nosaltres.")

Explicació del codi

  • from django.http import HttpResponse: Importa la classe HttpResponse que s'utilitza per retornar respostes HTTP simples.
  • def home(request): Defineix una vista anomenada home que pren un objecte request i retorna una resposta amb el text "Benvingut a la pàgina principal!".
  • def about(request): Defineix una vista anomenada about que retorna una resposta amb el text "Aquesta és la pàgina sobre nosaltres."

Utilització de plantilles

Per a respostes HTML més complexes, és millor utilitzar plantilles. Django proporciona una manera senzilla de renderitzar plantilles utilitzant la funció render.

Exemple de vista amb plantilla:

# myapp/views.py

from django.shortcuts import render

def home(request):
    return render(request, 'home.html')

def about(request):
    return render(request, 'about.html')

Explicació del codi

  • from django.shortcuts import render: Importa la funció render que s'utilitza per renderitzar plantilles.
  • return render(request, 'home.html'): Renderitza la plantilla home.html i la retorna com a resposta.
  • return render(request, 'about.html'): Renderitza la plantilla about.html.

Exercicis Pràctics

Exercici 1: Crear una nova vista i mapejar-la a una URL

  1. Crea una nova vista anomenada contact en el fitxer views.py que retorni un missatge simple.
  2. Afegeix un nou patró d'URL en el fitxer urls.py per mapejar la URL /contact/ a la vista contact.

Solució:

# myapp/views.py

def contact(request):
    return HttpResponse("Aquesta és la pàgina de contacte.")
# project/urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name='home'),
    path('about/', views.about, name='about'),
    path('contact/', views.contact, name='contact'),
]

Exercici 2: Utilitzar una plantilla per a la vista contact

  1. Crea una plantilla anomenada contact.html en el directori de plantilles de l'aplicació.
  2. Modifica la vista contact per utilitzar la plantilla contact.html.

Solució:

<!-- myapp/templates/contact.html -->

<!DOCTYPE html>
<html>
<head>
    <title>Pàgina de Contacte</title>
</head>
<body>
    <h1>Aquesta és la pàgina de contacte.</h1>
</body>
</html>
# myapp/views.py

def contact(request):
    return render(request, 'contact.html')

Resum

En aquesta secció, hem après com Django maneja l'enrutament d'URL i les vistes. Hem vist com definir patrons d'URL en el fitxer urls.py i com crear vistes que responen a les sol·licituds HTTP. També hem après a utilitzar plantilles per generar respostes HTML més complexes. Amb aquests coneixements, estem preparats per continuar amb els següents conceptes bàsics de Django.

© Copyright 2024. Tots els drets reservats