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