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ópathque 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 classeHttpResponseque s'utilitza per retornar respostes HTTP simples.def home(request): Defineix una vista anomenadahomeque pren un objecterequesti retorna una resposta amb el text "Benvingut a la pàgina principal!".def about(request): Defineix una vista anomenadaaboutque 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órenderque s'utilitza per renderitzar plantilles.return render(request, 'home.html'): Renderitza la plantillahome.htmli 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 
contacten el fitxerviews.pyque retorni un missatge simple. - Afegeix un nou patró d'URL en el fitxer 
urls.pyper 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.htmlen el directori de plantilles de l'aplicació. - Modifica la vista 
contactper 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
 
