0

我无法将我的问题放在一句话中。我正在按照教程从头开始制作博客。但该教程预测所有类别、标签、月份和年份列表都在单独的模板中。

我想在主博客页面上添加类别列表、月份和年份列表。

所以这就是我得到的。使用此代码,类别列表显示在主页中,但前提是您转到 blog/category url,而不仅仅是 blog/ 我想要的位置。

    **(r'^$', list),**
    (r'^archive/(\d{1,2})/$', list),
    (r'^\d{2}/d{4}/$', month),
    (r'^([0-9]{4}/\d{1,2})/(?P<slug>.*)/$', detail),
    (r'^(?P<year>\d{4})/$', year),
    **(r'^category/$', category),**

我也试过:

    (r'^$', category),

但没有运气。

这是 category.html 和 list.html 中模板中的相同代码:

 {% if categories %}
        {% for category in categories %}
        <li class="cat-item"><a href="category/{{ category.name.lower }}/"
            title="{{ category.name.capitalize }}">
             {{ category.name.capitalize }}</a>
         </li>
         {% endfor %}
         {% endif %}

视图.py:

def category(request):
    return render_to_response('blog/list.html', {'categories':Category.objects.all(),},)

就像这样。我试过这个,但在 def 列表中没有运气:

return render_to_response('blog/list.html',{'posts':posts,
                                       'next':next,
                                       'previous':previous,
                                       'categories':Category.objects.all(),
                                       },)

我怎样才能让博客/类别上的内容也显示在博客/上?谢谢。

4

1 回答 1

0

当您在浏览器中键入 url 时,请求将发送到您的服务器。Django 然后获取 url 并将其与 url 模式匹配以确定正确的视图。一旦找到视图,django 就会停止匹配并执行该视图,该视图又会返回响应。

如果您想在不同的视图中使用您的类别,您要么必须确保在每个视图中categories为模板提供相同的上下文变量,要么通常更好,编写一个简单的自定义模板标签。对于您的类别,这可能如下所示:

@register.inclusion_tag('blog/category_list.html')
def categories_list():
    return { 'categories': Category.objects.all() }

在文件 'blog/categoy_list.html' 中将是当前在 'categories.html' 和 'list.html' 中的代码。在这些文件中将其替换为。

{% load your_blog_tags %}
{% categories_list %}

您可以在任何需要类别列表的地方使用它。当然,这同样适用于年份和月份列表。

于 2012-06-07T17:20:48.527 回答