Creiamo una vista
Ora che abbiamo creato la nostra applicazione homepage cominciamo con l'implementazione di una vista.
Come abbiamo visto precedentemente le viste sono contenute nel file views.py e se lo apriamo con il nostro editor ci ritroveremo con qualcosa del genere:
from django.shortcuts import render
# Create your views here.
Sostituiamo tutto il contenuto del file con il seguente:
from django.http import HttpResponse
from django.views import View
class HomepageView(View):
def get(self, request):
return HttpResponse("This is the homepage")
Abbiamo creato una vista chiamata Homepage
implementata a classi, in inglese class-based view (CBV).
L'implementazione è abbastanza semplice: estendiamo la classe View
ed implementiamo il metodo get
che ci permette di definire un handler per richieste HTTP con metodo GET. A queste richieste
rispondiamo con This is the homepage
. Non specifichiamo lo status code, perché il default è 200.
Django permette di scrivere le viste anche come funzioni, anche qui non c'è un modo migliore per farlo, dipende dalla necessità. In questo libro usiamo sempre le viste a classi perché per la nostra esperienza permettono di riusare più codice e attenersi alle interfacce già previste da Django tende a far scrivere più omogeneo.
Fatta la vista dobbiamo collegarla al routing delle URL. Il routing delle URL del progetto è definito
nel file nuovoprogetto/urls.py
.
Aperto con l'editor, esclusa la documentazione all'inizio, dovrebbe essere così:
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
Aggiungiamo nel routing la nostra vista Homepage
modificando il file in questo modo:
from django.contrib import admin
from django.urls import path
from homepage.views import HomepageView
urlpatterns = [
path('admin/', admin.site.urls),
path('', HomepageView.as_view()),
]
Il sistema di routing si aspetta una callable perciò dobbiamo chiamare il metodo as_view()
della
nostra classe.
Rifacciamo partire il runserver
se lo abbiamo spento con il comando:
python3 manage.py runserver
Se puntiamo il browser su http://127.0.0.1:8000/ dovremmo vedere la nostra homepage.
Esercizi
- Come possiamo restituire uno status code diverso da 200? Guarda nella documentazione ufficiale di HttpResponse come sia possibile farlo.