使用django for循环显示用户数据

时间:2015-07-31 06:14:56

标签: html django for-loop django-forms

经过大量的时间和精力,我有一个菜单标题,用户可以在其中选择要显示在菜单标题中的详细信息。

如果用户选择显示超过20个菜单项,我将菜单设置为分为3列(总是显示3个菜单项,所以我已将列分隔符放在循环17上)。

如果用户选择的菜单项少于17个,则菜单将显示在2列中,如下所示:

enter image description here

如果用户选择了超过17个菜单项,菜单将显示在3列中。

当我尝试将列分隔符放在循环17时,当正好有17个菜单条目时,会显示第3列,但我只想要2列。仅当选择了超过17个菜单选项时,才会显示3列。

以下是我目前使用的代码:

enter image description here

这就是我想要实现的目标:

enter image description here

我已经尽力解决这个问题但不能。我在某个地方犯了一个错误,但我却看不到它(我很尴尬,我必须发布这个问题才能解决我的问题)。

我不确定我的HTML代码是否放置错误或我的django循环校准错误。

这是我的代码:

<div class="mega-menu-content">
    <div class="container">
        <div class="row equal-height">
            <div class="{% if selected_menu_entries|replace_comma_with_linespace|wordcount > 18 %}col-md-4{% else %}col-md-6{% endif %} equal-height-in">
                <ul class="list-unstyled equal-height-list">

                    <!-- a Details Pages -->
                    {# 1st Menu Details are always available. #}
                    <li>
                        <a href="{% url 'a_details' %}">
                            {% trans "1st Menu" %}
                            <span class="badge rounded-2x badge-blue">
                                {{ a_details_count }}
                            </span>
                        </a>
                    </li>
                    <!-- End a Details Pages -->

                    <!-- b Details Pages -->
                    {# 2nd Menu Details are always available. #}
                    <li>
                        <a href="{% url 'b_details' %}">
                            {% trans "2nd Menu" %}
                            <span class="badge rounded-2x badge-blue">
                                {{ b_details_count }}
                            </span>
                        </a>
                    </li>
                    <!-- End b Details Pages -->

                    <!-- c Details Pages -->
                    {# 3rd menu  Details are always available. #}
                    <li>
                        <a href="{% url 'c_details' %}">
                            {% trans "3rd Menu" %}
                            <span class="badge rounded-2x badge-blue">
                                {{ c_details_count }}
                            </span>
                        </a>
                    </li>
                    <!-- End c Details Pages -->

                    <!-- remaining selected Menu Details Pages -->
                    {# Only display the Menu Details that the user has selected to appear. #}
                    {% for entry, count, view_link in test_menu %}

                        <li>
                            <a href="{{ view_link }}">
                                {{ entry.label }}
                                <span class="badge rounded-2x badge-blue">
                                    {{ count }}
                                </span>
                            </a>
                        </li>

                        {% ifequal forloop.counter 7 %}
                                </ul>
                            </div>
                            <div class="{% if selected_menu_entries|replace_comma_with_linespace|wordcount > 18 %}col-md-4{% else %}col-md-6{% endif %} equal-height-in">
                                <ul class="list-unstyled equal-height-list">
                        {% endifequal %}

                        {% ifequal forloop.counter 17 %}
                                </ul>
                            </div>
                            <div class="{% if selected_menu_entries|replace_comma_with_linespace|wordcount > 18 %}col-md-4{% else %}col-md-6{% endif %} equal-height-in">
                                <ul class="list-unstyled equal-height-list">
                        {% endifequal %}

                    {% if forloop.last %}
                    </ul>
                </div>
            </div>
        </div>
    </div>

我希望有人可以指出我的错误。

1 个答案:

答案 0 :(得分:1)

替换它:

{% ifequal forloop.counter 17 %}
   </ul>
   </div>
   <div class="{% if selected_menu_entries|replace_comma_with_linespace|wordcount > 18 %}col-md-4{% else %}col-md-6{% endif %} equal-height-in">
     <ul class="list-unstyled equal-height-list">
 {% endifequal %}

使用:

{% ifequal forloop.counter 17 %}
{% if not forloop.last %}
 </ul>
  </div>
   <div class="{% if selected_menu_entries|replace_comma_with_linespace|wordcount > 18 %}col-md-4{% else %}col-md-6{% endif %} equal-height-in">
   <ul class="list-unstyled equal-height-list">
 {% endif %}
{% endifequal %}