Latest posts on Flask контексты current_app и g topichttp://python.su/forum/topic/33292/2017-08-08T09:41:23+03:00Веб-технологии :: Web :: Flask контексты current_app и g
2017-08-08T09:41:23+03:00ivn182198<blockquote><em>ayb</em><br/>Да вариантов масса:1. Использовать classy и использовать мидлвары для отдельных хендлеров.2. Обернуть хендлер своим декоратором.3. В глобальной мидлваре ( app.before_request ) проверять куда падает запрос.В любом случае, прийдет товарищ 4kpt и посоветует как сейчас модно делать.</blockquote>Прошу прощения, я не настолько продвинут )) можно не много по другому, мб примеры кода.
Веб-технологии :: Web :: Flask контексты current_app и g
2017-08-04T20:18:21+03:00ayb182062Да вариантов масса:<br/>1. Использовать classy и использовать мидлвары для отдельных хендлеров.<br/>2. Обернуть хендлер своим декоратором.<br/>3. В глобальной мидлваре ( app.before_request ) проверять куда падает запрос.<br/><br/>В любом случае, прийдет товарищ 4kpt и посоветует как сейчас модно делать.
Веб-технологии :: Web :: Flask контексты current_app и g
2017-08-04T19:18:59+03:00ivn182061например, думается так:<br/><br/>было:<br/><div class="code"><pre> <span class="nd">@app.route</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">index</span><span class="p">():</span>
<span class="n">design</span> <span class="o">=</span> <span class="p">{</span><span class="n">el</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">el</span><span class="o">.</span><span class="n">info</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">Design</span><span class="o">.</span><span class="n">query</span><span class="o">.</span><span class="n">all</span><span class="p">()}</span>
<span class="n">something_else</span> <span class="o">=</span> <span class="n">something_else</span><span class="p">()</span>
<span class="n">render_template</span><span class="p">(</span><span class="n">something_else</span><span class="o">=</span><span class="n">something_else</span><span class="p">,</span> <span class="n">design</span><span class="o">=</span><span class="n">design</span><span class="p">)</span>
<span class="nd">@app.route</span><span class="p">(</span><span class="s1">'/main'</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="n">design</span> <span class="o">=</span> <span class="p">{</span><span class="n">el</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">el</span><span class="o">.</span><span class="n">info</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">Design</span><span class="o">.</span><span class="n">query</span><span class="o">.</span><span class="n">all</span><span class="p">()}</span>
<span class="n">something_else</span> <span class="o">=</span> <span class="n">something_else</span><span class="p">()</span>
<span class="n">render_template</span><span class="p">(</span><span class="n">something_else</span><span class="o">=</span><span class="n">something_else</span><span class="p">,</span> <span class="n">design</span><span class="o">=</span><span class="n">design</span><span class="p">)</span>
</pre></div><br/>сделать так и насколько это выгодно?:<br/><br/><div class="code"><pre> <span class="nd">@app.before_request</span>
<span class="k">def</span> <span class="nf">before_request</span><span class="p">():</span>
<span class="n">g</span><span class="o">.</span><span class="n">design</span> <span class="o">=</span> <span class="p">{</span><span class="n">el</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">el</span><span class="o">.</span><span class="n">info</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">Design</span><span class="o">.</span><span class="n">query</span><span class="o">.</span><span class="n">all</span><span class="p">()}</span>
<span class="nd">@app.route</span><span class="p">(</span><span class="s1">'/'</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">index</span><span class="p">():</span>
<span class="n">something_else</span> <span class="o">=</span> <span class="n">something_else</span><span class="p">()</span>
<span class="n">render_template</span><span class="p">(</span><span class="n">something_else</span><span class="o">=</span><span class="n">something_else</span><span class="p">)</span>
<span class="nd">@app.route</span><span class="p">(</span><span class="s1">'/main'</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
<span class="n">something_else</span> <span class="o">=</span> <span class="n">something_else</span><span class="p">()</span>
<span class="n">render_template</span><span class="p">(</span><span class="n">something_else</span><span class="o">=</span><span class="n">something_else</span><span class="p">)</span>
</pre></div><br/>g.design - использовать уже в самом шаблоне<br/><br/>другое дело g.design будет создаваться даже тогда, когда в функциях представления будут использоваться шаблоны в которых не будет использоваться g.design<br/><br/><br/>
Веб-технологии :: Web :: Flask контексты current_app и g
2017-08-03T21:16:01+03:00ivn182036Добрый день.<br/>Прошу подсказать. разъяснить что из этого, когда и как применяется?<br/>Сейчас у меня на запросы реагирует функция представления, далее создаются нужные объекты и передаются в render_tempalate(), там обрабатываются и идёт ответ клиенту.<br/><br/>Другое дело в каждой моей функции представления создаются одни и те же объекты.<br/>Помогите разобраться.<br/><br/>Спасибо.