代码之家  ›  专栏  ›  技术社区  ›  user1499532

是否可以在Django模板的for循环中嵌套if语句

  •  0
  • user1499532  · 技术社区  · 10 年前

    我传递了2个上下文变量 {{ year_list }} {{ current_year }} 转换为django模板。我正在循环浏览 {{year_list}} 并检查是否 {{current_year}} 位于 {{year_list}} .

    {% each_year in year_list %}
      {% if each_year == current_year %}
       <li class="active"><a href="{{ each_year }}">{{ each_year }}</a></li>
      {% else %}
       <li><a href="{{ each_year }}">{{ each_year }}</a></li>
      {% endif %}
    

    它似乎不起作用。所有列表项都没有 class='active' 。但当我将 {{ each_year }} {{current_year}} 刚好在…之后 {% each_year in year_list %}

    我实际上使用的是基于类的视图 YearArchiveView 我想有一份年份表和今年的亮点。

    class SomeYearArchiveView(YearArchiveView):
        queryset = Some.objects.all()
        date_field = 'some_date'
        make_object_list = True
    
        def get_context_data(self, **kwargs):
            context = super(SomeYearArchiveView, self).get_context_data(**kwargs)
            context['year_list'] = [2010, 2011, 2012]
            context['current_year'] = self.request.path.split("/")[2]
            return context
    

    我做错了什么?有更好的方法吗?

    1 回复  |  直到 10 年前
        1
  •  3
  •   anuragal    10 年前

    在函数中 get_context_data -

    context['year_list'] = [2010, 2011, 2012]
    context['current_year'] = self.request.path.split("/")[2]
    

    这个 year_list 值为 integer 鉴于 current_year 值为 string 。这就是它们在模板中不匹配的原因。在代码中执行此操作-

    context['current_year'] = int(self.request.path.split("/")[2])
    

    这应该行得通