Уведомления

Группа в Telegram: @pythonsu

#1 Июль 5, 2013 18:22:44

funnyman
Зарегистрирован: 2012-07-10
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

flask вызов функций из шаблона

Начал изучать flask, беспокоит один вопрос. Например у меня есть шаблон, в нем присутствуют файлы page.html, category.html, и base.html. При переходе на каждую из страниц кроме например page.html мне нужно выводить меню. Так вот есть ли способ и как он называется что бы вынести генерацию меню из бд, в отдельную функцию и загружать его не зависимо от того по какому урлу я пришел.
Например зашел я по урл site.ru (@app.route('/')) функция отображения для этого урл, генерирует список 10 последних постов и рендерит с ними шаблон. Так же со страницой sites.ru/category/ рендерит посты из определенной категории. И вот везде же должно присутствовать меню. не генерить же его в каждой вьюхе? где можно про это прочитать? Я так предпологаю что можно из самого шаблона вызывать функции python и выводить данные?

Офлайн

#2 Июль 5, 2013 19:10:21

mks
От:
Зарегистрирован: 2009-08-07
Сообщения: 80
Репутация: +  5  -
Профиль   Отправить e-mail  

flask вызов функций из шаблона

Сам сейчас пробую flask.
Попробуйте например использовать декоратор before_request и перед каждым запросом помещать вашу функцию в объект g. А из шаблона вызывать её.



Офлайн

#3 Июль 6, 2013 09:44:43

funnyman
Зарегистрирован: 2012-07-10
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

flask вызов функций из шаблона

Пересмотрел кучу примеров сайтов на flask, создается ощущение что все пишут только простенькие сайты, либо что это элементарная истина.

на стэковерфлоу нашел такой способ:

For those using Flask, put this in your __init__.py:
def clever_function():
return u'HELLO'

app.jinja_env.globals.update(clever_function=clever_function)

and in your template call it with {{ clever_function() }}

И еще пришло в голову описывать состовляющие шаблона в виде классов например для base.html будет class Base с методами генерации динамеческого контента. Остальные будут унаследованы от него и перегружать методы. Дальше немного бреда: как можно повесить декораторы app.route() на методы или на класс целиком что бы все работало, или создавать отдельные функции для вьюх с объектами классов? Посмотреть бы на более менее большой проект с разными динамическими блоками вывода на странице. сразу бы встало все на свои места. Я конечно может просто заглядываю вперед, но вропрос покоя не дает просто.

Офлайн

#4 Июль 6, 2013 10:53:58

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

flask вызов функций из шаблона

А что мешает сделать меню в базовом шаблоне и наследоваться от него? Для добавления меню или функции генерации меню можно использовать context processor'ы

Офлайн

#5 Июль 6, 2013 11:23:20

funnyman
Зарегистрирован: 2012-07-10
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

flask вызов функций из шаблона

Спасибо! Просто вопросом задался раньше того, как дошел до этого момента. По незнанию начал велосипедить.

Офлайн

#6 Июль 7, 2013 00:24:26

f1aky
Зарегистрирован: 2013-01-26
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

flask вызов функций из шаблона

лудче миксин напишите.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version