Django包含仅在生产中重复的文件

时间:2016-04-25 19:26:29

标签: django django-models django-templates django-views

我为我的网站部件页面创建了侧边栏包含文件,并使用regroup标记按类别列出部件。它在本地工作得很好 - 见下面的截图。但在生产中,它会多次重复类别和部分 - 请参阅documentation。我迷失了这个原因。谢谢你的帮助。

我的侧边栏包含文件的代码:

{% regroup parts by category as category_list %}
<ul class="c-sidebar-menu collapse " id="sidebar-menu-1">
  {% for category in category_list %}
    <li class="c-dropdown c-active c-open">
      <a href="javascript:;" class="c-toggler">{{ category.grouper|capfirst }} <span class="c-arrow"></span> </a>
      <ul class="c-dropdown-menu">
        {% for p in parts %}
          {% if p.category == category.grouper %}
          <li>
            <a href="{% url 'part_detail' category=p.category slug=p.slug %}">{{ p.title }}</a>
          </li>
          {% endif %}
        {% endfor %}
      </ul>
    </li>
  {% endfor %}
</ul>

本地视图的屏幕截图(正确显示) http://www.dev.ddmpowertools.com/products/parts/

1 个答案:

答案 0 :(得分:1)

以下是正确的代码。它并没有像我想象的那样重复,它只是从上到下遍历我的类别,然后按类别对它们进行分组,因为它们位于列表中,这就是我获得重复类别的原因。在我的|dictsort:"category.slug"循环中将.list添加到我的重新组合代码和for修复了此问题。

{% regroup tools|dictsort:"category.slug" by category as grouped %}
<ul class="c-sidebar-menu collapse " id="sidebar-menu-1">
  {% for category in grouped %}
    <li class="c-dropdown c-active c-open">
      <a href="javascript:;" class="c-toggler">{{ category.grouper|capfirst }} <span class="c-arrow"></span> </a>
      <ul class="c-dropdown-menu">
        {% for t in category.list %}
          {% if t.category == category.grouper %}
          <li>
            <a href="{% url 'tool_detail' category=t.category slug=t.slug %}">{{ t.title }}</a>
          </li>
          {% endif %}
        {% endfor %}
      </ul>
    </li>
  {% endfor %}
</ul>