Pinax源代码分析9 - tag
标签
url
(r'^tags/', include('tag_app.urls')),
逻辑与模板
url(r'^(?P<tag>.+)/$', 'tag_app.views.tags', name='tag_results'),
依赖于tagging:
from tagging.models import Tag, TaggedItem
tags view 使用 TaggedItem.objects 的 get_by_model 方法获得指定标签的内容。
alltags = TaggedItem.objects.get_by_model(Post, tag).filter(status=2)
index模板在项目目录下的templates/tags/子目录中
{% extends "site_base.html" %}
{% load tribe_tags %}
{% load project_tags %}
{% load blog_tags %}
{% load wiki %}
{% load voting_tags %}
{% load extra_voting_tags %}
{% load in_filter %}
{% load extra_tagging_tags %}
{% get_comment_count for photo as commentcount %} {{ commentcount }}
{% scores_for_objects bookmarktags as score_dict %}
{% show_tag_counts bookmark.bookmark.all_tags_with_counts %}</div>
{% show_blog_post blog_post %}
{% show_project project %}
{% show_project_topic topic %}
{% show_task task %}
{% show_tribe tribe %}
{% show_tribe_topic topic %}
{% show_teaser article %}
刚开始载入的 tribe_tags, project_tags, blog_tags,wiki 各自定义在自己的app中,多为inclusion tag,后面以show_为开头的标签都是各自app定义的。
voting_tags 在 coting app 中定义,这里使用的是 {% scores_for_objects bookmarktags as score_dict %} 但是后面的模板中没再访问过 score_dict, 不知道是我没看明白还是编码失误。extra_tagging_tags 和 in_filter 在 misc 中定义,但是没找到使用了哪个标签。
extra_tagging_tags 在项目目录下的 tag_app app 中定义,显示带次数的标签列表。