Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 3, 2017 21:16:01

ivn
Зарегистрирован: 2017-01-13
Сообщения: 91
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask контексты current_app и g

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

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

Спасибо.

Отредактировано ivn (Авг. 3, 2017 21:16:23)

Офлайн

#2 Авг. 4, 2017 19:18:59

ivn
Зарегистрирован: 2017-01-13
Сообщения: 91
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask контексты current_app и g

например, думается так:

было:

 @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


Офлайн

#3 Авг. 4, 2017 20:18:21

ayb
Зарегистрирован: 2014-04-01
Сообщения: 297
Репутация: +  24  -
Профиль   Отправить e-mail  

Flask контексты current_app и g

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

В любом случае, прийдет товарищ 4kpt и посоветует как сейчас модно делать.

Офлайн

#4 Авг. 8, 2017 09:41:23

ivn
Зарегистрирован: 2017-01-13
Сообщения: 91
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask контексты current_app и g

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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version