2010년 6월 7일 월요일

13 - 3) 태그 페이지 만들기

우리가 갖고 있는 또 다른 정보를 출력하는 방법을 알아보도록 합시다.

사용자로부터 우리는 태그를 입력받았습니다.

이제 이 태그를 중심으로 하여 북마크 링크를 출력해 보도록 하겠습니다.

 

먼저 태그들을 중심으로 한 페이지의 사용자 요청은 "/tag/찾고자 하는 태그"이고 이에 따른 뷰는 tag_page가 되게 하려고 합니다.

복습의 의미로 각자 한번 위의 정보를 가지고 urls.py를 작성해 봅시다. (Hint. 실제 사용은 이와 다르나 사용자 홈페이지의 경우를 참고하여 작성합니다.)

 

사용할 template 입니다.

  1. template/tag_page.html
  2. {% extends "base.html" %}
  3. {% block title %} 태그 : {{ tag_name }} {% endblock %}
  4. {% block head %} 태그 "{{ tag_name }}"의 북마크 {% endblock %}
  5. {% block content %}
  6.     {% include "bookmark_list.html" %}
  7. {% endblock %}

 

이 템플릿을 보시면 아시겠지만 앞서 우리가 작성한 bookmark_list.html을 사용합니다.

앞선 사용자 홈에서의 북마크 리스트 출력과는 사용되는 지점이 다릅니다.

앞에서는 사용자 홈에서 사용하였으므로 show_user 를 통해 누가 북마크 하였는지 알아볼 필요가 없으나 이번 예제의 중심은 Tag이므로 해당 Tag를 누가 적용하였는지도 보여줄 계획입니다.

 

그리고 출력시 해당 태그를 클릭하면 해당 태그의 페이지가 되도록 bookmark_list.html의 {% if show_tags 부분 %} 을 다음과 같이 수정합니다.

 

  1. template/bookmark_list.html
  2. ...
  3.         {% if show_tags %}
  4.        태그 :
  5.            {% if bookmark.tag_set.all %}
  6.            <ul class="tags">
  7.                {% for tag in bookmark.tag_set.all %}
  8.                 <li><a href="/tag/{{ tag.name }}/">{{ tag.name }}</a></li>
  9.                {% endfor %}
  10.            </ul>
  11.            {% else %}
  12. ...

 

이 템플릿과 연동하여 사용자에게 결과를 보여줄 뷰입니다.

 

  1. 애플리케이션/views.py
  2. def tag_page(request, tag_name):
  3.    tag = get_object_or_404(Tag, name=tag_name);
  4.    bookmarks = tag.bookmarks.order_by('-id')
  5.    variables = RequestContext(request, {
  6.                                         'bookmarks': bookmarks,
  7.                                         'tag_name': tag_name,
  8.                                         'show_tags': True,
  9.                                         'show_user': True
  10.                                         })
  11.    return render_to_response('tag_page.html', variables);

 

show_user가 True로 전달되어 누가 해당 태그를 적용하였는지 출력합니다.

 

결과는 다음과 같습니다.

 

shot03.png

 

 

 

간략하게 저장된 값을 출력하는 방법에 대해 알아보았습니다.

지금까지의 예제들을 잘 숙지해 주시기 바랍니다.

수고하셨습니다.

이 글은 스프링노트에서 작성되었습니다.

댓글 1개:

  1. 귀중한 강의 잘 봤습니다. 감사합니다.
    많이 배워갑니다.

    정말 고마워요. 그럼 수고하세요

    답글삭제