<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Flask - Tag - // TODO: Fix Later (2019)</title><link>https://viktor.dev/en/tags/flask/</link><description>Flask - Tag - // TODO: Fix Later (2019)</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><managingEditor>email@viktor.dev (Viktor Chukhantsev)</managingEditor><webMaster>email@viktor.dev (Viktor Chukhantsev)</webMaster><copyright>© Viktor Chukhantsev</copyright><lastBuildDate>Tue, 22 Oct 2019 10:03:33 +0700</lastBuildDate><atom:link href="https://viktor.dev/en/tags/flask/" rel="self" type="application/rss+xml"/><item><title>Flask nocache decorator</title><link>https://viktor.dev/en/2019-11-21-flask-nocache-decorator/</link><pubDate>Tue, 22 Oct 2019 10:03:33 +0700</pubDate><author>email@viktor.dev (Viktor Chukhantsev)</author><guid>https://viktor.dev/en/2019-11-21-flask-nocache-decorator/</guid><description><![CDATA[<p>Flask nocache decorator.</p>
<div class="code-block code-line-numbers" style="counter-reset: code-block 0">
    <div class="code-header language-python">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">flask</span> <span class="kn">import</span> <span class="n">make_response</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">wraps</span><span class="p">,</span> <span class="n">update_wrapper</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">nocache</span><span class="p">(</span><span class="n">view</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="nd">@wraps</span><span class="p">(</span><span class="n">view</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="nf">no_cache</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="n">response</span> <span class="o">=</span> <span class="n">make_response</span><span class="p">(</span><span class="n">view</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">        <span class="n">response</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="s1">&#39;Last-Modified&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">        <span class="n">response</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="s1">&#39;Cache-Control&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;no-store, no-cache, must-revalidate, post-check=0, pre-check=0, max-age=0&#39;</span>
</span></span><span class="line"><span class="cl">        <span class="n">response</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="s1">&#39;Pragma&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;no-cache&#39;</span>
</span></span><span class="line"><span class="cl">        <span class="n">response</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="s1">&#39;Expires&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;-1&#39;</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="n">response</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="n">update_wrapper</span><span class="p">(</span><span class="n">no_cache</span><span class="p">,</span> <span class="n">view</span><span class="p">)</span></span></span></code></pre></div></div>
<p>Use it wisely.</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-python">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">nocache</span> <span class="kn">import</span> <span class="n">nocache</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nd">@app.route</span><span class="p">(</span><span class="s1">&#39;/my_endpoint&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nd">@nocache</span>
</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">my_endpoint</span><span class="p">():</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="s2">&#34;Endpoint without cache&#34;</span></span></span></code></pre></div></div>]]></description></item></channel></rss>