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