Форум сайта python.su
Начал изучать flask, беспокоит один вопрос. Например у меня есть шаблон, в нем присутствуют файлы page.html, category.html, и base.html. При переходе на каждую из страниц кроме например page.html мне нужно выводить меню. Так вот есть ли способ и как он называется что бы вынести генерацию меню из бд, в отдельную функцию и загружать его не зависимо от того по какому урлу я пришел.
Например зашел я по урл site.ru (@app.route('/')) функция отображения для этого урл, генерирует список 10 последних постов и рендерит с ними шаблон. Так же со страницой sites.ru/category/ рендерит посты из определенной категории. И вот везде же должно присутствовать меню. не генерить же его в каждой вьюхе? где можно про это прочитать? Я так предпологаю что можно из самого шаблона вызывать функции python и выводить данные?
Офлайн
Сам сейчас пробую flask.
Попробуйте например использовать декоратор before_request и перед каждым запросом помещать вашу функцию в объект g. А из шаблона вызывать её.
Офлайн
Пересмотрел кучу примеров сайтов на 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() }}
Офлайн
А что мешает сделать меню в базовом шаблоне и наследоваться от него? Для добавления меню или функции генерации меню можно использовать context processor'ы
Офлайн
Спасибо! Просто вопросом задался раньше того, как дошел до этого момента. По незнанию начал велосипедить.
Офлайн
лудче миксин напишите.
Офлайн