Ćwiczenie — tworzenie widoków

Ukończone

Chcemy zaktualizować naszą aplikację, aby udostępnić listę schronisk dla psów. Chcemy również, aby aplikacja zezwoliła komuś na kliknięcie lub naciśnięcie pojedynczego schronienia, aby wyświetlić szczegóły. Zrobimy to, tworząc dwa widoki, a następnie rejestrując odpowiednie ścieżki.

Tworzenie widoków

  1. W programie Visual Studio Code otwórz dog_shelters /views.py.

  2. Na końcu wiersza, który odczytuje from django.shortcuts import render, dodaj , get_object_or_404. Wiersz powinien teraz zostać odczytany:

    from django.shortcuts import render, get_object_or_404
    
  3. Poniżej wiersza z napisem from django.shortcuts import renderdodaj następujący kod w języku Python, aby zaimportować modele:

    from . import models
    
  4. Na końcu views.py dodaj następujący kod, aby załadować wszystkie schroniska, utworzyć obiekt kontekstu dla szablonu, a następnie wyrenderować szablon dla użytkownika. Stanie się to naszym widokiem listy dla schronisk i strony domyślnej dla naszej witryny.

    def shelter_list(request):
        shelters = models.Shelter.objects.all()
        context = {'shelters': shelters}
        return render(request, 'shelter_list.html', context)
    
  5. Na końcu views.py dodaj następujący kod, aby załadować określone schronienie według jego pk klucza podstawowego, utworzyć obiekt kontekstu dla szablonu, a następnie wyrenderować szablon dla użytkownika. Stanie się to stroną szczegółów schroniska.

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

Tworzenie interfejsu URLconf

Aby nasze widoki można było wywoływać, musimy zarejestrować odpowiednie ścieżki.

  1. Utwórz nowy plik w dog_shelters o nazwie urls.py.

  2. Dodaj następujący kod, aby zarejestrować ścieżki dla dwóch utworzonych widoków:

    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
    ]
    

Zwróć uwagę, że utworzyliśmy domyślną ścieżkę (''), aby wskazać nasz shelter_list widok. Zarejestrowaliśmy się shelter/<int:pk> również w celu odwołania się do naszego shelter_detail widoku. Jak wyróżniono wcześniej, pk zostanie przekazany jako pk parametr do shelter_detail.

Zarejestruj adres URLconf w naszym projekcie

Django używa jednego podstawowego pliku urls.py jako identyfikatora URLconf. W związku z tym musimy upewnić się, że utworzony przez nas element jest prawidłowo zarejestrowany.

  1. Otwórz projekt/urls.py.

  2. W dolnej części pliku znajdź wiersz 17, który odczytuje:

    from django.urls import path
    

    Na końcu wiersza dodaj element , include. Nowy wiersz 17 powinien teraz być następujący:

    from django.urls import path, include
    
  3. Poniżej wiersza, który odczytuje TODO: Register URLconfciąg , dodaj następujące elementy:

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

    Ważne

    Wymagany jest przecinek końcowy.

  4. Zapisz wszystkie pliki, wybierając pozycję Plik>Zapisz wszystko.