우리가 갖고 있는 또 다른 정보를 출력하는 방법을 알아보도록 합시다.
사용자로부터 우리는 태그를 입력받았습니다.
이제 이 태그를 중심으로 하여 북마크 링크를 출력해 보도록 하겠습니다.
먼저 태그들을 중심으로 한 페이지의 사용자 요청은 "/tag/찾고자 하는 태그"이고 이에 따른 뷰는 tag_page가 되게 하려고 합니다.
복습의 의미로 각자 한번 위의 정보를 가지고 urls.py를 작성해 봅시다. (Hint. 실제 사용은 이와 다르나 사용자 홈페이지의 경우를 참고하여 작성합니다.)
사용할 template 입니다.
- template/tag_page.html
- {% extends "base.html" %}
- {% block title %} 태그 : {{ tag_name }} {% endblock %}
- {% block head %} 태그 "{{ tag_name }}"의 북마크 {% endblock %}
- {% block content %}
- {% include "bookmark_list.html" %}
- {% endblock %}
이 템플릿을 보시면 아시겠지만 앞서 우리가 작성한 bookmark_list.html을 사용합니다.
앞선 사용자 홈에서의 북마크 리스트 출력과는 사용되는 지점이 다릅니다.
앞에서는 사용자 홈에서 사용하였으므로 show_user 를 통해 누가 북마크 하였는지 알아볼 필요가 없으나 이번 예제의 중심은 Tag이므로 해당 Tag를 누가 적용하였는지도 보여줄 계획입니다.
그리고 출력시 해당 태그를 클릭하면 해당 태그의 페이지가 되도록 bookmark_list.html의 {% if show_tags 부분 %} 을 다음과 같이 수정합니다.
- template/bookmark_list.html
- ...
- {% if show_tags %}
- 태그 :
- {% if bookmark.tag_set.all %}
- <ul class="tags">
- {% for tag in bookmark.tag_set.all %}
- <li><a href="/tag/{{ tag.name }}/">{{ tag.name }}</a></li>
- {% endfor %}
- </ul>
- {% else %}
- ...
이 템플릿과 연동하여 사용자에게 결과를 보여줄 뷰입니다.
- 애플리케이션/views.py
- def tag_page(request, tag_name):
- tag = get_object_or_404(Tag, name=tag_name);
- bookmarks = tag.bookmarks.order_by('-id')
- variables = RequestContext(request, {
- 'bookmarks': bookmarks,
- 'tag_name': tag_name,
- 'show_tags': True,
- 'show_user': True
- })
- return render_to_response('tag_page.html', variables);
show_user가 True로 전달되어 누가 해당 태그를 적용하였는지 출력합니다.
결과는 다음과 같습니다.
간략하게 저장된 값을 출력하는 방법에 대해 알아보았습니다.
지금까지의 예제들을 잘 숙지해 주시기 바랍니다.
수고하셨습니다.
이 글은 스프링노트에서 작성되었습니다.
귀중한 강의 잘 봤습니다. 감사합니다.
답글삭제많이 배워갑니다.
정말 고마워요. 그럼 수고하세요