Django函数问题和urlconf混淆

时间:2012-06-07 16:01:45

标签: django function blogs categories

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

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

所以这就是我得到的。使用此代码,类别列表将显示在主页面中,但仅限于您访问博客/类别URL,而不是仅仅位于博客/我想要的位置。

    **(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 %}

Views.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(),
                                       },)

如何在博客上显示博客/类别上的节目? 感谢。

1 个答案:

答案 0 :(得分:0)

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

如果您想在不同的视图中使用您的类别,您必须确保在每个视图中为模板提供相同的categories上下文变量,或者通常情况要好得多,{{3} }。对于您的类别,这可能如下所示:

@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 %}

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