Уведомления

Группа в Telegram: @pythonsu

#1 Март 25, 2014 16:54:48

defond
Зарегистрирован: 2013-06-12
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask блоки страницы

День добрый.

Не могу разобраться с логикой Flask.

У меня есть базовый шаблон страницы. Внутри него меняются только блоки с содержимым (в зависимости от Юзера, сомой страницы и т.п.). Как я понял из офф доков, я могу расширять свой базовый шаблон при помощи форм. Есть даже пример с формой авторизации. Мало того, что он у меня не запускается, т.к. Flask ругается на код, так и по аналогии ничего не выходит.

Берем базовый шаблон - это страница index.html Плюс создаем файл, в котором храним код, расширяющий наш базовый шаблон - допустим banner_index.html.

Подготавливаем banner_index.html.

{% extends "index.html" %}
{% block body %}
        <div id="banner-wrapper">
			<div class="container">
				<div class="row">
					<div class="12u">
						<div id="banner">
							<h2>Put something cool here!</h2>
							<span>And put something almost as cool here, but a bit longer ...</span>
						</div>
					</div>
				</div>
			</div>
		</div>
{% endblock %}

Дальше, как я понял из доков, я должен в файле index.html вставить следющую конструкцию:
				</div>
			</div>
		</div>
{% block body %}{% endblock %}
		<div id="main">
			<div class="container">
				<div class="row main-row">
					<div class="4u">

И в этом месте базовый шаблон будет дополнен кодом из banner_index.html.

Или я не так понял?

Офлайн

#2 Март 25, 2014 16:57:18

defond
Зарегистрирован: 2013-06-12
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask блоки страницы

Офлайн

#3 Март 25, 2014 17:05:58

Singularitty
От:
Зарегистрирован: 2012-02-02
Сообщения: 61
Репутация: +  5  -
Профиль   Отправить e-mail  

Flask блоки страницы

defond
наследования шаблона не для этого.

Надо просто в index.html вставить

 {% include 'banner_index.html' %}

http://ru.wikibooks.org/wiki/Flask#.D0.A8.D0.B0.D0.B3_6:_.D0.A8.D0.B0.D0.B1.D0.BB.D0.BE.D0.BD.D1.8B

Отредактировано Singularitty (Март 25, 2014 17:07:35)

Офлайн

#4 Март 25, 2014 17:15:00

defond
Зарегистрирован: 2013-06-12
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask блоки страницы

Singularitty
{% include ‘banner_index.html’ %}
Спасибо.

Офлайн

#5 Март 25, 2014 19:22:11

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Flask блоки страницы

Flask тут вообще не причем. Читайте доки к jinja2 подход одинаковый что фласком что пирамид что с джанго что с fabric whateveryouwant. И Инклуд в данном случае никак не заменяет наследование шаблона. Инкуд используется для выноса одинакового куска кода в отдельный файл, наследование для перекрытия части шаблона. Например так

base.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
    {% include head.html %}
 </head>
<body>
{% block body %}
   {% block navigation %}
   {% endblock navigation %}
    <h1>My Webpage</h1>
    {{ a_variable }}
{% endblock body %}
</body>
</html>

base_with_navigation.html
{% extends base.html %}
   {% block navigation %}
    <ul id="navigation">
    {% for item in navigation %}
        <li><a href="{{ item.href }}">{{ item.caption }}</a></li>
    {% endfor %}
    </ul> 
  {% endblock navigation %}

В результате в шаблонах наследуемых от base.html не будет навигации а от base_navigation.html будет в остальном будут идентичны. Плюс отдельно будет файл header.html изменения к котором будут приводить к изменению обоих базовых шаблонов.

Отредактировано PanovSergey (Март 25, 2014 19:38:01)

Офлайн

#6 Март 25, 2014 19:36:11

defond
Зарегистрирован: 2013-06-12
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask блоки страницы

PanovSergey
Flask тут вообще не причем. Читайте доки к jinja2 подход одинаковый что фласком что пирамид что с джанго что вообще с fabric whateveryouwant.

Вот такая статья с Хабра пойдет для ориентира?

Офлайн

#7 Март 25, 2014 19:38:58

defond
Зарегистрирован: 2013-06-12
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask блоки страницы

PanovSergey
И Инклуд в данном случае никак не заменяет наследование шаблона. Инкуд используется для выноса одинакового куска кода в отдельный файл, наследование для перекрытия части шаблона.

Это я понял. Имел опыт html+php.

С наследованием пока не очень. Пробую.

Офлайн

#8 Март 25, 2014 19:46:06

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Flask блоки страницы

defond
Вот такая статья с Хабра пойдет для ориентира?
Рекомендую бросить читать всякую ересь Хабр. Читать доки. И доки наше все.

Офлайн

#9 Март 25, 2014 20:06:26

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Flask блоки страницы

defond
С наследованием пока не очень. Пробую.
Ну вот наследование в картинках
http://medinika.ru/
http://medinika.ru/beauty/cosmetology/
http://medinika.ru/services/uhod-za-telom/
Третий наследован от второго второй от первого структура по сути одинаковая. В третьем перекрыт от второго только центральный блок. Во втором от первого сохраняется структура страницы, но перекрыты левый блок и центр.
На самом деле перекрыто конечно там чуть больше ну суть должна быть ясна.

Отредактировано PanovSergey (Март 25, 2014 20:07:40)

Офлайн

#10 Март 25, 2014 20:09:50

defond
Зарегистрирован: 2013-06-12
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask блоки страницы

Доки - наше все. С них начинаю. Но в доках часто мало вразумительных примеров.

Спасибо за ссылки. Буду посмотреть.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version