经过大量的时间和精力,我有一个菜单标题,用户可以在其中选择要显示在菜单标题中的详细信息。
如果用户选择显示超过20个菜单项,我将菜单设置为分为3列(总是显示3个菜单项,所以我已将列分隔符放在循环17上)。
如果用户选择的菜单项少于17个,则菜单将显示在2列中,如下所示:
如果用户选择了超过17个菜单项,菜单将显示在3列中。
当我尝试将列分隔符放在循环17时,当正好有17个菜单条目时,会显示第3列,但我只想要2列。仅当选择了超过17个菜单选项时,才会显示3列。
以下是我目前使用的代码:
这就是我想要实现的目标:
我已经尽力解决这个问题但不能。我在某个地方犯了一个错误,但我却看不到它(我很尴尬,我必须发布这个问题才能解决我的问题)。
我不确定我的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>
我希望有人可以指出我的错误。
答案 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 %}