Esercizio - Creare viste

Completato

Si vuole aggiornare l'applicazione per offrire un elenco di canili. Si vuole anche che l'applicazione consenta a un utente di fare clic o toccare un singolo canile per visualizzare i dettagli. A tale scopo, verranno create due viste e verranno quindi registrati i percorsi appropriati.

Creare viste

  1. In Visual Studio Code aprire dog_shelters/views.py.

  2. Alla fine della riga from django.shortcuts import render aggiungere , get_object_or_404. La riga dovrebbe essere ora analoga alla seguente:

    from django.shortcuts import render, get_object_or_404
    
  3. Sotto la riga from django.shortcuts import render aggiungere il codice Python seguente per importare i modelli:

    from . import models
    
  4. Alla fine di views.py aggiungere il codice seguente per caricare tutti i canili, creare il contesto di ambiente per il modello, quindi eseguire il rendering del modello per l'utente. Questa diventerà la vista elenco per i canili e la pagina predefinita per il sito.

    def shelter_list(request):
        shelters = models.Shelter.objects.all()
        context = {'shelters': shelters}
        return render(request, 'shelter_list.html', context)
    
  5. Alla fine di views.py aggiungere il codice seguente per caricare un canile specifico in base al rispettivo valore pk o chiave primaria, creare il contesto di ambiente per il modello, quindi eseguire il rendering del modello per l'utente. Questa diventerà la pagina dei dettagli per un canile.

    def shelter_detail(request, pk):
        shelter = get_object_or_404(models.Shelter, pk=pk)
        context = {'shelter': shelter}
        return render(request, 'shelter_detail.html', context)
    

Creare URLconf

Per rendere richiamabili le viste, sarà necessario registrare i percorsi appropriati.

  1. Creare un nuovo file in dog_shelters, denominato urls.py.

  2. Aggiungere il codice seguente per registrare i percorsi per le due viste create:

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.shelter_list, name='shelter_list'),
        path('shelter/<int:pk>', views.shelter_detail, name='shelter_detail'),
        # More patterns to come later
    ]
    

Si noti che è stato creato un percorso predefinito ('') per fare riferimento alla vista shelter_list. È stata eseguita anche la registrazione di shelter/<int:pk> per fare riferimento alla vista shelter_detail. Come evidenziato in precedenza, pk verrà passato come parametro pk a shelter_detail.

Registrare URLconf con il progetto

Django usa un file urls.py di base come URLconf. È quindi necessario assicurarsi che il file creato sia registrato correttamente.

  1. Aprire project/urls.py.

  2. Verso la fine del file individuare la riga 17:

    from django.urls import path
    

    Alla fine della riga aggiungere , include. La nuova riga 17 dovrebbe ora essere analoga alla seguente:

    from django.urls import path, include
    
  3. Sotto la riga TODO: Register URLconf aggiungere il codice seguente:

    # TODO: Register URLconf
    path('', include('dog_shelters.urls')),
    

    Importante

    La virgola finale è obbligatoria.

  4. Salvare tutti i file selezionando File>Salva tutto.