【问题标题】:How to check active accordion based on object id?如何根据对象 ID 检查活动手风琴?
【发布时间】:2021-08-30 01:46:13
【问题描述】:

在这里{% c_url request 'display' %} 这将返回显示类或无。如果显示类返回我想保持手风琴折叠打开。但这正在打开所有的崩溃。

我只想将display 类应用于特定的#collapseid。我该怎么做?

模板

 {% for n in navs %}
      <li>
        <a
          data-toggle="collapse"
          class="sub{{n.id}} {% c_url request 'active' %}"
          href="#collapse{{n.id}}"
          aria-expanded="true"
          aria-controls="collapse"
          ><p>
            {{n.title}}
          </p></a
        >
        <div class="collapse{{n.id}} {% c_url request 'display' %}"  id="collapse{{n.id}}">
          <ul class="nav">
          {% for i in n.nav_set.all %}
            ..............

          {% endfor %}
        
          </ul>
        </div>
      </li> 
    {% endfor %}

c_url 模板标签

@register.simple_tag
def c_url(request, value): 

    if request.resolver_match.url_name in ['url1', 'url2']:
        return value

【问题讨论】:

  • 不清楚'url1'、'url2'的逻辑是什么。我是否正确理解您需要在某个折叠 ID 上设置类“显示”?你知道那个 id 还是它在某个变量中?
  • @EgorWexler url1 和 url2 是 url 名称。如果当前 url 名称在列表中,那么我想在这个 url 的折叠 div 上设置 class display

标签: django django-views django-templates


【解决方案1】:

我可以建议两个“更简单”的选项:

  1. 在上下文导航中的 n 上设置活动状态标志(在 views.py 中):

     for n in navs:
         if <condition for active>:
             n.active = True
    

    然后在模板中:

     {% if n.active %}display{% endif %}
    
  2. 为活动折叠 ID 的上下文添加一个附加选项: views.py

     for n in navs:
         if <condition for active>:
             context['active_id'] = n.id
    

    然后在模板中:

     {% if n.id == active_id %}display{% endif %}
    

【讨论】:

  • {% if n.active %}display{% endif %}这个集合显示就全部折叠
  • @D_P,我认为应该只在某些导航上设置显示(取决于您的条件)。所以完整的行看起来像这样&lt;div class="collapse{{n.id}} {% if n.active %} 'display'{% endif %}" id="collapse{{n.id}}"&gt;,其中n.active = True 仅设置在您希望激活的行上
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-03
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
  • 2012-09-23
相关资源
最近更新 更多