Иметь отдельный шаблон для каждой вкладки без отдельного URL - Django - PullRequest
0 голосов
/ 19 января 2012

Я пытаюсь разработать систему отчетности с использованием Django.Я должен отображать отчеты о различных категориях данных. Я поместил каждую категорию в виде tab-tab1, tab2 и т. Д. Можно ли иметь разные шаблоны для каждой вкладки без необходимости изменения URL-адреса.Я пробовал наследование шаблонов, но для этого требуется отдельный URL для каждой вкладки.Меня беспокоит то, что если количество вкладок будет расти, то количество URL также увеличится.

Есть предложения, пожалуйста?

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 19 января 2012

Вы можете использовать библиотеку, такую ​​как jquery tabs , чтобы создать вкладки, а затем загрузить каждый шаблон индивидуально либо через include, как предложено @DrTyrsa, либо с помощью пользовательского тега шаблона (что будет моим личным предпочтением).

Вот пример (из превосходного bootstrap framework из твиттера):

<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>
0 голосов
/ 19 января 2012

Почему увеличивается количество 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 ...
0 голосов
/ 19 января 2012

Вы можете просто использовать тег {% include%} и включать различные шаблоны.

И я думаю, что лучше иметь уникальный URL для каждой вкладки, хотя бы с хештегом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...