Найти - Пользователи
Полная версия: Несколько блоков на странице
Начало » Django » Несколько блоков на странице
1 2 3
dissdoc
Всем привет. Проблема появилась снова :)
Итак, что имею. Есть шаблон main.html. Идея шаблона в том, что html-страница делится на 2 части. Левая часть страницы не изменяется. Правая страница изменятся. В результате код такой
<div class="left">
{% block left %}
{% endblock %}
</div>
<div class="right">
{% block right %}
{% endblock %}
</div>
Ну и соответсвенно делаю два шаблона для левой и правой части.
Left.html
{% extends "main.html" %}
{% block left %}
LEFT BLOCK
{% endblock %}
Ну и для правой соответсвенно аналогично.
И тут появляется проблема… Я два шаблона-то подтянуть не могу. А в один пихать - мне кажется неправильно.
Смотрите. Правая часть будет постоянно меняться. В результате у меня будет около 20 шаблонов правой части. Неужто я левый блок должен во все шаблоны копировать? А если я левый блок захочу изменить? Потом все заново перекопировать?
Ferroman
Если правый не будет меняться - засуньте его в базовый. Зачем его держать отдельно?
dissdoc
ну наверное придется так. я честно говоря надеялся есть более элегантный способ в виде ООП :(
чтобы можно было страницы разделять на части
dissdoc
http://habrahabr.ru/blogs/django/23132/ - нашел занятную статью. То что надо! :)
Ferroman
Зачем разделять на части то, что не требует разделения?
Flat is better than nested.
dissdoc
Может и не требует разделения.
Я никак не могу разобраться с проблемой, когда вычисляется несколько видов (views.py)
Как бы объяснить. Вот если логически рассуждать, то есть url (^page/$)
Но тут же сразу появляется проблема. в левой части по моей задумке есть функция отображения def left_view(request), а в правой своя функция def right_view(request). Получается нужно сразу две функции прикрутить к одному url…
У меня никак не сложится логика работы всего сайта. Ведь левая часть появляется везде, а правая меняется постоянно. Как идея - это сделать как бы внутреннюю функцию def left_view() , а потом ее добавлять во все функции видов, где она требуется. Так что ли получается?
Или есть более красивый способ?
Ferroman
Для каждой разной правой - свой view (я так понимаю, там основной контент). Для левой (это sidebar, как я понимаю) - оформляешь темплейттаг.
dissdoc
Неа. Правая часть - допустим список всех сообщений. Левая часть список сообщений созданных конкретным пользователем.
Т.е. получается ЛОГИЧНО делать 2 view для одного шаблона… Или опять что-то я не допонял? :(
Ferroman
Нет, не так.
Один из списков будет показываться на многих страницах - это дополнительная функция, и её надо оформлять как темплейттаг.
Другой же список будет заменятся чем-то другим - это будет основная функциональная часть страницы.

Например :

|Список новостей | список комментариев конкретного пользователя | view будет news
|Список последних комментариев | список комментариев конкретного пользователя | view будет last_comments
|Статья | список комментариев конкретного пользователя | view будет show_article

Список комментариев конкретного пользователя оформляем как темплейттаг и размещаем в шаблоне.
dissdoc
Нашел только вот это http://docs.djangoproject.com/en/dev/ref/templates/builtins/#templatetag
А как функцию оформить не могу найти. вы не можете подсказать пример,ссылку где посмотреть?

Update
Вроде нашел http://www.djangosnippets.org/snippets/1568/ Это?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB