Menu
CoddyTech

작가 페이지 만들기

Coddy Django 여정의 모델과 관리자 섹션에 포함된 레슨. 23개 중 23번째.

마지막 부분입니다. 모든 저자에게는 전용 페이지가 있으며, 저자 이름이 나오는 모든 곳에서 그 페이지로 연결됩니다. 이번 섹션에서 만든 책 페이지를 다른 모델에 맞게 만드는 것입니다.

세 가지 접근 방법을 생각해 보세요. /authors/를 방문한 사람이 이름을 클릭합니다. 책 페이지를 방문한 사람이 "by Frank Herbert"를 클릭합니다. 그리고 존재하지 않는 저자의 주소를 입력하는 사람도 있습니다. 이 경우에는 오류가 발생하는 대신 404가 표시되어야 합니다.

{% url %}과 저자의 id를 사용해 모든 링크를 만드세요. 그러면 나중에 urls.py가 변경되더라도 링크가 이에 맞게 유지됩니다.

challenge icon

챌린지

중급

모든 작가에게 /authors/<id>/에 author_detail이라는 페이지를 만들어 주세요.

  1. books/views.py에서 author_detail(request, pk)을 작성해 books/author_detail.html을 렌더링하세요. 이름은 <h1>에 표시하고, 각 책으로 연결되는 링크를 추가하며, 알 수 없는 id에는 404를 반환하세요. 경로도 추가하세요.
  2. author_list.html에서 각 <h2>의 이름을 해당 작가의 페이지로 연결하세요.
  3. book_detail.html에서 작가 이름에만 링크를 추가하세요: by <a href="/authors/1/">Frank Herbert</a>.

/authors/에서 Frank Herbert를 클릭하면 그의 페이지에 Children of Dune과 Dune으로 연결되는 링크가 표시됩니다.

직접 해보기

from django.shortcuts import get_object_or_404, render

from .models import Author, Book


def home(request):
    books = Book.objects.select_related("author")
    return render(request, "books/home.html", {"books": books})


def book_detail(request, pk):
    book = get_object_or_404(Book, pk=pk)
    return render(request, "books/book_detail.html", {"book": book})


def search(request):
    q = request.GET.get("q", "")
    books = Book.objects.filter(title__icontains=q).select_related("author")
    return render(request, "books/search.html", {"q": q, "books": books})


def author_list(request):
    authors = Author.objects.prefetch_related("books")
    return render(request, "books/author_list.html", {"authors": authors})
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

모델과 관리자의 모든 레슨

직접 연습해 보세요: Django 플레이그라운드