- 好处一:
- 好处二:
另外一个顺带出来的好处,是对于 Flask Extension 开发者而言,blueprint 便于在 app 上插拔。而且 url_for 等等具有隔离命名空间的效果。
正常的组织形式如下:
首先是注册一个形式上的view,得到一个蓝图对象:
admin_views.py
<pre name="code" class="lang-py prettyprint prettyprinted" style="margin-top:0px; margin-bottom:1em; padding:5px; border:0px; font-size:13px; overflow:auto; width:auto; max-height:600px; font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif; color:rgb(57,51,24); word-wrap:normal; background-color:rgb(238,238,238)"><code style="margin:0px; padding:0px; border:0px; font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif; white-space:inherit"><span class="kwd" style="color:#008b;margin:0px; padding:0px; border:0px;">from</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> flask </span><span class="kwd" style="color:#008b;margin:0px; padding:0px; border:0px;">import</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> </span><span class="typ" style="color:#2b91af;margin:0px; padding:0px; border:0px;">Blueprint</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> admin </span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">=</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> </span><span class="typ" style="color:#2b91af;margin:0px; padding:0px; border:0px;">Blueprint</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">(</span><span class="str" style="color:#8000;margin:0px; padding:0px; border:0px;">'admin'</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">,</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> __name__</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">)</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> </span><span class="lit" style="color:#8000;margin:0px; padding:0px; border:0px;">@admin</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">.</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;">route</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">(</span><span class="str" style="color:#8000;margin:0px; padding:0px; border:0px;">'/'</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">)</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> </span><span class="kwd" style="color:#008b;margin:0px; padding:0px; border:0px;">def</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> index</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">():</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> </span><span class="kwd" style="color:#008b;margin:0px; padding:0px; border:0px;">pass</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> </span><span class="lit" style="color:#8000;margin:0px; padding:0px; border:0px;">@admin</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">.</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;">route</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">(</span><span class="str" style="color:#8000;margin:0px; padding:0px; border:0px;">'/logout'</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">)</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> </span><span class="kwd" style="color:#008b;margin:0px; padding:0px; border:0px;">def</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> logout</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">():</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> </span><span class="kwd" style="color:#008b;margin:0px; padding:0px; border:0px;">pass</span></code>
将该蓝图对象挂载(注册)到app下面:
application.py
<pre name="code" class="lang-py prettyprint prettyprinted" style="margin-top:0px; margin-bottom:1em; padding:5px; border:0px; font-size:13px; overflow:auto; width:auto; max-height:600px; font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif; color:rgb(57,51,24); word-wrap:normal; background-color:rgb(238,238,238)"><code style="margin:0px; padding:0px; border:0px; font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif; white-space:inherit"><span class="kwd" style="color:#008b;margin:0px; padding:0px; border:0px;">from</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> flask </span><span class="kwd" style="color:#008b;margin:0px; padding:0px; border:0px;">import</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> </span><span class="typ" style="color:#2b91af;margin:0px; padding:0px; border:0px;">Flask</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> </span><span class="kwd" style="color:#008b;margin:0px; padding:0px; border:0px;">from</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> admin_views </span><span class="kwd" style="color:#008b;margin:0px; padding:0px; border:0px;">import</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> admin app </span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">=</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> </span><span class="typ" style="color:#2b91af;margin:0px; padding:0px; border:0px;">Flask</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">(</span><span class="str" style="color:#8000;margin:0px; padding:0px; border:0px;">'my_application'</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">)</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> app</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">.</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;">register_blueprint</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">(</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;">admin</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">,</span><span class="pln" style="color:#000000;margin:0px; padding:0px; border:0px;"> url_prefix</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">=</span><span class="str" style="color:#8000;margin:0px; padding:0px; border:0px;">'/admin'</span><span class="pun" style="color:#000000;margin:0px; padding:0px; border:0px;">)</span></code>