使用Django的动态引导选项卡

时间:2018-12-22 06:04:16

标签: django

我在mysql中有2个表。一个是主表,其中保留标题,标题将显示为选项卡标题,而一个内容表将显示为每个选项卡的内容。 2个表之间有外键。但是我无法在正确的标签下打印相关内容。

这是我显示标签标题的代码。

<ul class="nav nav-tabs">
    {% for title in titles %}
      <li class="nav-item">
        <a class="nav-link active" id="{{ title.id }}" data-toggle="tab" href="#{{ title.name }}" role="tab" aria-controls="{{ title.name }}" aria-selected="true">{{ title.name }}</a>
          </li>
    {% endfor %}
 </ul>

这是标签内容的一部分

 <div class="tab-content" id="SideBarTabContent">
 <!-- tab content -->
   <div class="tab-pane fade show active" id="should print header name" role="tabpanel" aria-labelledby="should print header name">
     <ul class="nav flex-column mb-2">
      {% for item in contents %}
        <li class="nav-item">
          <a class="nav-link active" href="{{ item.id }}">
             {{ item.name }} 
            <span class="sr-only"></span>
          </a>
        </li>
      {% endfor %}
     </ul>
   </div>
 </div>

有django代码:

def home(request):
    titles = Headers.objects.all()[:10]
    contents = content.objects.select_related('Content')
    return render_to_response('main.html', {'titles' : titles, 'contents': contents})

1 个答案:

答案 0 :(得分:1)

我通过在view.py生成html解决了问题。在收到您的反馈之前,我将使用它。但是我现在有另一个问题。在我的网站中,我在左侧栏中显示了此标签,而左侧栏是所有页面的静态页面。它应该在每一页中。但是我现在只能对main.html进行render_to_response,打开其他页面时失败。当我浏览其他页面时如何显示?

def home(request):
modules = Headers.objects.all()[:10]
m=0
i=0
tabHtml =''
contentHtml =''
while m < len(modules):
    tabHtml += '<li class="nav-item"><a class="nav-link" id="'+modules[m].ModuleName+'-tab" data-toggle="tab" href="#'+modules[m].ModuleName+'" role="tab" aria-controls="'+modules[m].ModuleName+'" aria-selected="true">'+modules[m].ModuleName+'</a></li>'
    contentHtml +='<div class="tab-pane fade show active" id="'+ modules[m].ModuleName + '" role="tabpanel" aria-labelledby="'+ modules[m].ModuleName + '-tab">'
    moduleitems = Content.objects.select_related('Item').filter(Item_id =modules[m].id)
    while i < len(moduleitems):
        contentHtml +='<ul class="nav flex-column mb-2"><li class="nav-item"><a class="nav-link active" href="#"><span data-feather="home"></span>'+str(moduleitems[i].id)+'<span class="sr-only"></span></a></li></ul></div>'
        i = i+1
    m = m+1
return render_to_response('main.html', {'tabContentHtml' : contentHtml, 'tabHtml': tabHtml})