티스토리 뷰
2020/08/17 - [Django] - localLibrary 저자 & 책 페이지 만들기: 제너릭 뷰와 상세 뷰
이전 글에서 licalLibrary 사이트의 잭 페이지 및 상세 페이지를 만들어 보았다. 이를 이용하여 저자 및 저자 상세 페이지를 만들어 보았다.
1. Author 페이지
1-1. url 맵퍼
catalog/urls.py
를 아래와 같이 편집한다.
urlpatterns = [
path('', views.index, name='index'),
path('books/', views.BookListView.as_view(), name='books'),
# path('books/<uuid:pk>', views.BookDetailView.as_view(), name='book-detail'),
path('books/<int:pk>', views.BookDetailView.as_view(), name='book-detail'),
path('authors/', views.AuthorListView.as_view(), name='authors'),
]
1-2. 저자 뷰
catalog/views.py
를 아래와 같이 편집한다.
class AuthorListView(generic.ListView):
model = Author
1-3. 저자 리스트 뷰 템플릿 생성히기
/locallibrary/catalog/templates/catalog/author_list.html
경로에 html 파일을 생성하여 아래의 코드를 삽입한다.
{% extends "base_generic.html" %}
{% block content %}
<h1>Author List</h1>
{% if author_list %}
<ul>
{% for author in author_list %}
<li>
<a href="{{ author.get_absolute_url }}">{{ author.first_name }}, {{ author.last_name }}</a>
{% if author.date_of_birth %}
({{ author.date_of_birth }} ~
{% else %}
( 불명 ~
{% endif %}
{% if author.date_of_death %}
{{ author.date_of_death }})
{% else %}
불명 )
{% endif %}
</li>
{% endfor %}
</ul>
{% else %}
<p>There are no Authers.</p>
{% endif %}
{% endblock %}
1-4. base_generic.html
편집하기
{% block sidebar %}
<ul class="sidebar-nav">
<li><a href="{% url 'index' %}">Home</a></li>
<li><a href="{% url 'books' %}">All books</a></li>
<li><a href="{% url 'authors' %}">All authors</a></li>
</ul>
{% endblock %}
이전까지 사이드 메뉴에서 All authers
에 비어있는 url을 채운다. catalog/urls.py
에 저자 페이지의 이름을 authors
로 지정했으므로 {% url 'authors' %}
로 주었다.
2. Author 상세 페이지 만들기
2-1. url 맵퍼
catalog/urls.py
를 아래와 같이 편집한다.
urlpatterns = [
path('', views.index, name='index'),
path('books/', views.BookListView.as_view(), name='books'),
# path('books/<uuid:pk>', views.BookDetailView.as_view(), name='book-detail'),
path('books/<int:pk>', views.BookDetailView.as_view(), name='book-detail'),
path('authors/', views.AuthorListView.as_view(), name='authors'),
path('authors/<int:pk>', views.AuthorDetailView.as_view(), name='author-detail'),
]
상세 뷰
catalog/views.py
를 아래와 같이 편집한다.
class AuthorDetailView(generic.DetailView):
model = Author
저자 상세 뷰 템플릿 생성히기
/locallibrary/catalog/templates/catalog/author_detail.html
경로에 html 파일을 생성하여 아래의 코드를 삽입한다.
{% extends "base_generic.html" %}
{% block content %}
<h1>Auther: {{ author.first_name }}, {{ author.last_name }}</h1>
<p>
{% if author.date_of_birth %}
{{ author.date_of_birth }} ~
{% else %}
불명 ~
{% endif %}
{% if author.date_of_death %}
{{ author.date_of_death }}
{% else %}
불명
{% endif %}
</p>
<div style="margin-left:20px;margin-top:20px">
<h4>Books</h4>
<hr>
{% for copy in author.book_set.all %}
<p><a href="{% url 'book-detail' copy.id %}"><strong> {{ copy.title }} ({{ copy.id }})</strong></a></p>
<p>{{copy.summary}}</p>
{% endfor %}
</div>
{% endblock %}
여기까지 마치면 아래와 같은 저자 페이지와 저자 상세 페이지가 뜨는 것을 확인할 수 있다.
-
저자 페이지
-
저자 상세 페이지
'Django' 카테고리의 다른 글
localLibrary 세션 프레임워크(Sessions framework): 방문자 카운트 (0) | 2020.09.08 |
---|---|
localLibrary 저자 & 책 페이지 만들기: 제너릭 뷰와 상세 뷰 (0) | 2020.08.17 |
localLibrary 홈페이지 만들기 : index 페이지 (0) | 2020.08.15 |
localLibrary 관리자 페이지 (0) | 2020.08.13 |
localLibrary 모델(models.py) 편집 (0) | 2020.08.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- baekjoon
- tips
- 리찬규
- QComboBox
- 리규찬
- 북한말
- 소수
- Mac
- word
- 유래
- QGridLayout
- words
- NK
- setText()
- QLineEdit
- PyQt5
- C
- 백준
- 어원
- Python
- QLabel
- Tistory
- judge
- MacOS
- QtDesigner
- python3
- books
- django
- locallibrary
- BOJ
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함
11-29 08:59