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:
- Ruta: La cadena d'URL que es vol mapejar.
- Vista: La funció de vista que es cridarà quan es coincideixi amb la ruta.
- 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 classeHttpResponse
que s'utilitza per retornar respostes HTTP simples.def home(request)
: Defineix una vista anomenadahome
que pren un objecterequest
i retorna una resposta amb el text "Benvingut a la pàgina principal!".def about(request)
: Defineix una vista anomenadaabout
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 plantillahome.html
i la retorna com a resposta.return render(request, 'about.html')
: Renderitza la plantillaabout.html
.
Exercicis Pràctics
Exercici 1: Crear una nova vista i mapejar-la a una URL
- Crea una nova vista anomenada
contact
en el fitxerviews.py
que retorni un missatge simple. - Afegeix un nou patró d'URL en el fitxer
urls.py
per mapejar la URL/contact/
a la vistacontact
.
Solució:
# 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
- Crea una plantilla anomenada
contact.html
en el directori de plantilles de l'aplicació. - Modifica la vista
contact
per utilitzar la plantillacontact.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>
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.
Curs de Desenvolupament Web amb Django
Mòdul 1: Introducció a Django
- Què és Django?
- Configuració de l'Entorn de Desenvolupament
- Creació del teu Primer Projecte Django
- Comprensió de l'Estructura del Projecte Django
Mòdul 2: Conceptes Bàsics de Django
- Aplicacions Django i Estructura del Projecte
- Enrutament d'URL i Vistes
- Plantilles i Fitxers Estàtics
- Models i Bases de Dades
- Interfície d'Administració de Django
Mòdul 3: Django Intermedi
Mòdul 4: Django Avançat
- Consultes Avançades amb Django ORM
- Models d'Usuari Personalitzats
- Senyalitzacions de Django
- Proves en Django
- Optimització del Rendiment