【问题标题】:Category from base.html in all views?所有视图中来自 base.html 的类别?
【发布时间】:2013-02-20 19:47:59
【问题描述】:

我有类别模型:

class Category(models.Model):
    name = models.CharField(max_length=255)
    slug = models.SlugField()

我希望在我的基本 html 中有我的类别列表。怎么办?

  <ul>
        <li class="category">Search Property</li>

        {% for cat in category %}
            <li class="category_link"><a href="/category/{{ cat.slug }}/">{{ cat.name }}</a></li>
        {% endfor %}    
    </ul>

views.py

def category(request):
    category = Category.objects.all()
    return render_to_response('base.html',{'category':category}, context_instance=RequestContext(request))

urls.py:

url(r'^cat/','content.views.category'),
)

这项工作仅在 127.0.0.1:8000/cat

我在所有视图中都需要这个(我的类别显示在 base.html 中)。怎么办?

【问题讨论】:

标签: django


【解决方案1】:

您可以使用 Django 模板标签:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-tags

在 app/templatetags/categories.py 中

    from django.template.base import Library

    register = Library()


    @register.inclusion_tag('path/to/template')
    def categories():

        categories = Category.objects.all()
        return {'categories': categories,}

在html中

{% load categories %}

以及您希望在哪里包含类别

{% categories %}

【讨论】:

    【解决方案2】:

    写一个context processor,它返回一个类别列表。像这样简单的事情应该可以工作:

    def all_categories(request):
        return {'ALL_CATEGORIES': Category.objects.all()}
    

    并将其添加到您的 TEMPLATE_CONTEXT_PROCESSORS 设置中。

    请注意,在执行此操作时,ALL_CATEGORIES 将在每个使用 RequestContext 的模板上下文中可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      • 1970-01-01
      • 2015-10-16
      • 1970-01-01
      相关资源
      最近更新 更多