我有类别模型:
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中)。怎么办?
答案 0 :(得分:3)
您可以使用Django模板标记:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-tags
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 %}
答案 1 :(得分:2)
写一个context processor,返回一个类别列表。像这样简单的东西应该有效:
def all_categories(request):
return {'ALL_CATEGORIES': Category.objects.all()}
并将其添加到您的TEMPLATE_CONTEXT_PROCESSORS
设置。
请注意,在执行此操作时,ALL_CATEGORIES
将在使用RequestContext的每个模板上下文中可用。