Django - django模板中的变量

时间:2017-01-17 10:12:35

标签: django

是否可以在django模板中编写类似的内容:

{% for subcategory in category.subcategory.all %}
        <li style="padding-left:20px">
          <a href="/{{category.slug}}/{{subcategory.slug}}">
         {{ subcategory.name }}
         {{ sub_ + str(subcategory) }}
   </a></li>  
{% endfor %} <br>

在我的views.py中,我有:

def index(request):
    context = {}
    categories = Category.objects.select_related()
    subcategories = SubCategory.objects.all()
    context['categories'] = categories
    context['subcategories'] = subcategories
    for subcategory in subcategories:
        sites = Site.objects.filter(subcategory=subcategory, is_active=True)
        print(sites.count())
        context['sub_' + str(subcategory)] = sites.count()
        print(context)
    return render(request, 'mainapp/index.html', context)

我需要计算每个子类别中的网站。我想我可以通过制作sub_category1,sub_category2变量来做到这一点。但我不知道如何在模板中获取它。有任何想法吗?当我写{{sub_category1}}时,它有效。我需要把

1 个答案:

答案 0 :(得分:4)

{{ sub_ + str(subcategory) }}

不,这不会起作用。

我会在SubCategory模型上创建一个方法:

def get_active_sites(self):
    return Site.objects.filter(subcategory=self, is_active=True)

现在你可以使用

{{ subcategory.get_active_sites.count }}

在模板中。同样地,我将/{{category.slug}}/{{subcategory.slug}}替换为使用reverse()的SubCategory上的方法;可能名为get_absolute_url()