연습-데이터 편집을 위한 제네릭 뷰 구현

완료됨

사용자가 보호소에 유기견을 등록할 수 있도록 하려면 CreateView를 사용합니다.

Get_absolute_url을 지원하도록 모델 업데이트

먼저 get_absolute_url을 지원하도록 모델을 업데이트합니다.

  1. Visual Studio Code 내에서 dog_shelters/models.py를 엽니다.

  2. reverse 함수를 가져오려면 표시된 줄 # TODO: Import reverse 아래에 다음 코드를 추가하세요.

    # TODO: Import reverse
    from django.urls import reverse
    
  3. # TODO: Add get_absolute_url가 표시된 줄 바로 아래 Dog 클래스에 다음 코드를 추가하여 URLconf에서 dog_detail 경로를 읽고 해당 ID를 매개 변수로 전달합니다.

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

중요

Python은 중괄호({ })가 아닌 탭으로 엔클로저를 관리합니다. 이러한 이유로 get_absolute_url#TODO 주석과 동일한 탭 수준에 있어야 합니다. solution 디렉터리에 있는 파일을 참조하여 완료된 프로젝트를 확인할 수 있습니다.

DogCreateView 만들기

DogCreateView다른 사용자가 유기견을 등록할 수 있도록 만들어 보겠습니다.

  1. Visual Studio Code 내에서 dog_shelters/views.py를 엽니다.

  2. Views.py의 끝에 다음 코드를 추가하여 DogCreateView를 만듭니다.

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

모델을 Dog로 설정하고 템플릿을 dog_form.html로 하고 편집할 수 있도록 만들 필드 목록을 설정합니다.

참고

필드를 나열하는 순서는 폼에 표시되는 순서에 따라 결정됩니다.

경로 등록

뷰가 생성되면 URLconf에 경로를 등록해 보겠습니다.

  1. Visual Studio Code 내에서 dog_shelters/urls.py를 엽니다.

  2. # TODO: Register create view이라고 표시된 줄 아래에 다음 코드를 추가하여 경로를 등록합니다.

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

HTML 템플릿 만들기

폼을 호스트할 템플릿을 만들어 보겠습니다.

  1. Visual Studio Code에서 dog_shelters/templates 내에 dog_form.html라는 새 파일을 생성합니다.

  2. 다음 코드를 dog_form.html에 추가하여 폼을 호스트하는 템플릿을 만듭니다.

    {% 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 %}
    

참고

라이브러리 추가를 위해 메모를 추가하고 있습니다. 라이브러리는 다음 연습에서 추가합니다.

현재 애플리케이션의 홈페이지인 보호소 목록 페이지에 우리가 만든 등록 페이지로 연결되는 링크를 만들어 보겠습니다.

  1. Visual Studio Code 내에서 dog_shelters/dv/shelter_list.html을 엽니다.

  2. {# TODO: Add link to registration page #}로 표시된 줄 아래에 다음 코드를 추가하여 링크를 만듭니다.

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

페이지 테스트

작동하는 페이지를 보겠습니다.

  1. 파일>모두 저장을 선택하여 모든 파일을 저장합니다.

  2. 브라우저에서 http://localhost:8000으로 이동합니다.

  3. 입양 가능한 유기견 등록을 선택합니다.

    이제 다음과 같이 표시됩니다.

    보호소를 강조 표시한 드롭다운 목록이 있는 유기견 등록 페이지의 스크린샷.

    외래 키 관계가 드롭다운 목록이 되는 방식을 확인합니다.

  4. 보호소를 선택하고 유기견의 이름과 설명을 추가합니다.

  5. 저장을 선택합니다.

    이제 유기견에 대한 세부 정보 페이지로 리디렉션됩니다!

이제 Django에서 CreateView를 사용하여 생성 폼을 만들었습니다.