Найти - Пользователи
Полная версия: Flask контексты current_app и g
Начало » Web » Flask контексты current_app и g
1
ivn
Добрый день.
Прошу подсказать. разъяснить что из этого, когда и как применяется?
Сейчас у меня на запросы реагирует функция представления, далее создаются нужные объекты и передаются в render_tempalate(), там обрабатываются и идёт ответ клиенту.

Другое дело в каждой моей функции представления создаются одни и те же объекты.
Помогите разобраться.

Спасибо.
ivn
например, думается так:

было:
 @app.route('/')
def index():
    design = {el.name: el.info for el in Design.query.all()}
    something_else = something_else()
    render_template(something_else=something_else, design=design)
@app.route('/main')
def main():
    design = {el.name: el.info for el in Design.query.all()}
    something_else = something_else()
    render_template(something_else=something_else, design=design)

сделать так и насколько это выгодно?:

 @app.before_request
def before_request():
    g.design = {el.name: el.info for el in Design.query.all()}
@app.route('/')
def index():
    something_else = something_else()
    render_template(something_else=something_else)
@app.route('/main')
def main():
    something_else = something_else()
    render_template(something_else=something_else)

g.design - использовать уже в самом шаблоне

другое дело g.design будет создаваться даже тогда, когда в функциях представления будут использоваться шаблоны в которых не будет использоваться g.design


ayb
Да вариантов масса:
1. Использовать classy и использовать мидлвары для отдельных хендлеров.
2. Обернуть хендлер своим декоратором.
3. В глобальной мидлваре ( app.before_request ) проверять куда падает запрос.

В любом случае, прийдет товарищ 4kpt и посоветует как сейчас модно делать.
ivn
ayb
Да вариантов масса:1. Использовать classy и использовать мидлвары для отдельных хендлеров.2. Обернуть хендлер своим декоратором.3. В глобальной мидлваре ( app.before_request ) проверять куда падает запрос.В любом случае, прийдет товарищ 4kpt и посоветует как сейчас модно делать.
Прошу прощения, я не настолько продвинут )) можно не много по другому, мб примеры кода.
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