用于显示django-categories的breadcrumb的模板语法

时间:2014-02-05 22:11:31

标签: django django-templates

我已经在models.py中构建了一个带有django-categories的简单模型:

class Article(models.Model):
    title = models.CharField(max_length=120)
    # ...
    category = models.ForeignKey('categories.Category')

在我的views.py中我有

class IndexView(generic.ListView):
    template_name = 'blog/index.html'
    context_object_name = 'latest_article_list'
    paginate_by = 25

    def get_queryset(self):
        return Article.objects.order_by('pub_date').filter(category_id=2)

在我的模板'blog / index.html'中,我有:

{% load category_tags %}
...
{% for blog in latest_article_list %}
  <li><a href="/uphero/{{ blog.id }}">{{ blog.title }}</a></li>
{% endfor %}
...

我创建了三个类别:

blog
  |-- sub1
  |-- sub2
       |-- foo
       |-- bar

我有两个问题:

  1. 在我的views.py中,我使用.filter(category_id=3)来返回文章 在blog > sub2 > foo下,我真的想用 .filter(category='foo')代替,但django报告“没有属性 类别“错误,是否有使用文本版本类别名称的解决方法 而不是id

  2. 我想在页面顶部创建一个痕迹路径,例如: blog > sub2 > foo

  3. 这样:类别名称是可链接的;如果类别包含子类别,则显示子类别列表;如果类别不包含子类别,则显示该类别下的文章列表。

    我在这里研究文档https://django-categories.readthedocs.org/en/latest/reference/templatetags.html#breadcrumbs-tag,但无法确定正确的语法。

    有人可以帮我解决这些问题吗?

    感谢。

1 个答案:

答案 0 :(得分:0)

对于第一个问题,以下查询应该有效:

.filter(category__name="foo")

关于第二个问题,您需要为每个类别创建一个视图。如果您已经完成此操作,请分享您的观看次数和模板代码,以便我们为您提供帮助。