Ćwiczenie — implementowanie widoków ogólnych w celu edytowania danych

Ukończone

Aby umożliwić użytkownikom rejestrowanie nowych psów w schronisku, użyjemy polecenia CreateView.

Aktualizowanie modelu w celu obsługi get_absolute_url

Zacznijmy od zaktualizowania modelu w celu obsługi get_absolute_urlusługi .

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

  2. Dodaj następujący kod poniżej wiersza, który odczytuje # TODO: Import reverse w celu zaimportowania reverse funkcji.

    # TODO: Import reverse
    from django.urls import reverse
    
  3. Dodaj następujący kod do Dog klasy natychmiast wiersz, który odczytuje # TODO: Add get_absolute_url , aby odczytać ścieżkę dog_detail z pliku URLconf i przekazać identyfikator jako parametr.

        # TODO: Add get_absolute_url
        def get_absolute_url(self):
            return reverse('dog_detail', kwargs={"pk": self.pk})
    

Ważne

Pamiętaj, że język Python zarządza obudowami za pomocą kart, a nie nawiasów klamrowych ({ }). Ze względu na ten fakt, get_absolute_url musi na tym samym poziomie karty co #TODO komentarz. Aby wyświetlić ukończony projekt, możesz odwołać się do plików w katalogu rozwiązania .

Tworzenie elementu DogCreateView

Utwórzmy DogCreateView , aby umożliwić komuś zarejestrowanie psa.

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

  2. Na końcu views.py dodaj następujący kod, aby utworzyć DogCreateViewplik .

    class DogCreateView(generic.CreateView):
        model = models.Dog
        template_name = 'dog_form.html'
        fields = ['shelter', 'name', 'description']
    

Ustawiliśmy model na Dogwartość , aby szablon był dog_form.html, a lista pól, które chcemy edytować.

Uwaga

Kolejność wyświetlania pól będzie kolejnością wyświetlania ich w formularzu.

Rejestrowanie trasy

Po utworzeniu widoku zarejestrujmy trasę w naszym adresie URLconf.

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

  2. Poniżej wiersza, który odczytuje # TODO: Register create view, dodaj następujący kod, aby zarejestrować trasę.

    # TODO: Register create view
    path('dog/register', views.DogCreateView.as_view(), name='dog_register'),
    

Tworzenie szablonu HTML

Utwórzmy szablon do hostowania formularza.

  1. Wewnątrz programu Visual Studio Code utwórz nowy plik wewnątrz dog_shelters/szablonów o nazwie dog_form.html.

  2. Dodaj następujący kod do pliku dog_form.html , aby utworzyć szablon do hostowania formularza.

    {% extends 'base.html' %}
    
    {# TODO: Register crispy_forms_tags #}
    
    {% block title %}
    Register dog at shelter
    {% endblock %}
    
    {% block content %}
    <h2>Register dog at shelter</h2>
    <form method="POST">
        {% csrf_token %}
    
        {{ form.as_p }}
    
        <button type="submit" class="btn btn-primary">Save</button>
    </form>
    {% endblock %}
    

Uwaga

Dodajemy dla siebie notatkę, aby dodać bibliotekę, którą wykonamy w następnym ćwiczeniu.

Utwórzmy link na naszej stronie listy schronisk, która jest obecnie stroną główną naszej aplikacji, do utworzonej strony rejestracji.

  1. W programie Visual Studio Code otwórz plik dog_shelters/templates/shelter_list.html.

  2. Poniżej wiersza, który odczytuje {# TODO: Add link to registration page #}, dodaj następujący kod, aby utworzyć link.

    {# TODO: Add link to registration page #}
    <div>
        <a href="{% url 'dog_register' %}">Register a dog available for adoption</a>
    </div>
    

Testowanie strony

Zobaczmy naszą stronę w akcji.

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

  2. W przeglądarce przejdź do adresu http://localhost:8000.

  3. Wybierz pozycję Zarejestruj psa dostępnego do wdrożenia.

    Powinien zostać wyświetlony formularz.

    Screenshot of the register dog page, with the drop-down list for Shelter highlighted.

    Zwróć uwagę, że nasza relacja klucza obcego staje się listą rozwijaną.

  4. Wybierz schronienie i dodaj nazwę i opis psa.

  5. Wybierz pozycję Zapisz.

    Teraz nastąpi przekierowanie do strony szczegółów twojego psa!

Formularz tworzenia został utworzony przy użyciu narzędzia CreateView Django.