연습-데이터 편집을 위한 제네릭 뷰 구현
사용자가 보호소에 유기견을 등록할 수 있도록 하려면 CreateView
를 사용합니다.
Get_absolute_url을 지원하도록 모델 업데이트
먼저 get_absolute_url
을 지원하도록 모델을 업데이트합니다.
Visual Studio Code 내에서 dog_shelters/models.py를 엽니다.
reverse
함수를 가져오려면 표시된 줄# TODO: Import reverse
아래에 다음 코드를 추가하세요.# TODO: Import reverse from django.urls import reverse
# 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
다른 사용자가 유기견을 등록할 수 있도록 만들어 보겠습니다.
Visual Studio Code 내에서 dog_shelters/views.py를 엽니다.
Views.py의 끝에 다음 코드를 추가하여
DogCreateView
를 만듭니다.class DogCreateView(generic.CreateView): model = models.Dog template_name = 'dog_form.html' fields = ['shelter', 'name', 'description']
모델을 Dog
로 설정하고 템플릿을 dog_form.html로 하고 편집할 수 있도록 만들 필드 목록을 설정합니다.
참고
필드를 나열하는 순서는 폼에 표시되는 순서에 따라 결정됩니다.
경로 등록
뷰가 생성되면 URLconf에 경로를 등록해 보겠습니다.
Visual Studio Code 내에서 dog_shelters/urls.py를 엽니다.
# TODO: Register create view
이라고 표시된 줄 아래에 다음 코드를 추가하여 경로를 등록합니다.# TODO: Register create view path('dog/register', views.DogCreateView.as_view(), name='dog_register'),
HTML 템플릿 만들기
폼을 호스트할 템플릿을 만들어 보겠습니다.
Visual Studio Code에서 dog_shelters/templates 내에 dog_form.html라는 새 파일을 생성합니다.
다음 코드를 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 %}
참고
라이브러리 추가를 위해 메모를 추가하고 있습니다. 라이브러리는 다음 연습에서 추가합니다.
등록 페이지에 링크 만들기
현재 애플리케이션의 홈페이지인 보호소 목록 페이지에 우리가 만든 등록 페이지로 연결되는 링크를 만들어 보겠습니다.
Visual Studio Code 내에서 dog_shelters/dv/shelter_list.html을 엽니다.
{# 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>
페이지 테스트
작동하는 페이지를 보겠습니다.
파일>모두 저장을 선택하여 모든 파일을 저장합니다.
브라우저에서
http://localhost:8000
으로 이동합니다.입양 가능한 유기견 등록을 선택합니다.
이제 다음과 같이 표시됩니다.
외래 키 관계가 드롭다운 목록이 되는 방식을 확인합니다.
보호소를 선택하고 유기견의 이름과 설명을 추가합니다.
저장을 선택합니다.
이제 유기견에 대한 세부 정보 페이지로 리디렉션됩니다!
이제 Django에서 CreateView
를 사용하여 생성 폼을 만들었습니다.