【问题标题】:Have separate template for each tab without having separate URL - Django每个选项卡都有单独的模板,没有单独的 URL - Django
【发布时间】:2012-01-19 07:23:21
【问题描述】:

我正在尝试使用 Django 开发报告系统。我必须显示有关各种数据类别的报告。我已将每个类别作为 tab-tab1、tab2 等。是否可以为每个选项卡设置不同的模板而无需更改 url。 我已经尝试过模板继承,但这需要每个选项卡都有单独的 url。 我担心的是,如果选项卡的数量增加,那么 url 的数量也会增加。

有什么建议吗?

提前致谢。

【问题讨论】:

    标签: django


    【解决方案1】:

    为什么 URL 数量增加会出现问题?

    大概您不需要为每个选项卡单独的 URLconf 条目,您只需捕获 URL 中的选项卡名称并将其发送到视图:

    url(r'^reports/(?P<tab_name>\w+)/$', views.reports, name='reports')
    

    ...

    def reports(request, tab_name):
      ... do something depending on tab_name ...
    

    【讨论】:

    • 感谢丹尼尔的解决方案。我担心每个选项卡的 URLconf 条目。这将解决我的问题。
    【解决方案2】:

    您可以只使用{% include %} 标签并包含不同的模板。

    而且我认为最好为每个标签设置唯一的 URL,至少带有标签。

    【讨论】:

      【解决方案3】:

      您可以使用jquery tabs 之类的库来创建选项卡,然后按照@DrTyrsa 的建议通过include 或自定义模板标签(这将是我的个人偏好)单独加载每个模板。

      这是一个示例(来自 twitter 上优秀的 bootstrap 框架):

      <ul class="tabs">
        <li class="active"><a href="#home">Home</a></li>
        <li><a href="#profile">Profile</a></li>
        <li><a href="#messages">Messages</a></li>
        <li><a href="#settings">Settings</a></li>
      </ul>
      
      <div class="pill-content">
        <div class="active" id="home">...</div>
        <div id="profile">...</div>
        <div id="messages">...</div>
        <div id="settings">...</div>
      </div>
      
      <script>
        $(function () {
          $('.tabs').tabs()
        })
      </script>
      

      【讨论】:

      • 谢谢布尔汉。我会读到它。我是 Django 的新手。所以,还在想办法。
      猜你喜欢
      • 2014-01-27
      • 2015-11-12
      • 2019-04-30
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多