天天看點

Flask blueprint藍圖按功能子產品化架構執行個體

使用flask作為開發架構,一定要按功能子產品化,否則到了後面項目越大,開發速度就越慢。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>[root@yang-218 yangyun]</code><code># tree</code>

<code>.</code>

<code>├── asset               </code><code>#資産功能目錄</code>

<code>│   ├── __init__.py</code>

<code>│   ├── models.py        </code><code>#資産資料庫結構檔案</code>

<code>│   └── views.py         </code><code>#資産視圖檔案</code>

<code>├── user                </code><code>#使用者功能目錄</code>

<code>│  ├──__init__.py</code>

<code>│  ├── models.py          </code><code>#使用者資料庫結構檔案</code>

<code>│  └── views.py           </code><code>#使用者視圖配置檔案</code>

<code>├── config.py             </code><code>#公共配置檔案</code>

<code>├── requirements.txt        </code><code>#需要的安裝包</code>

<code>├── run.py               </code><code>#主運作檔案</code>

<code>├── static               </code><code>#靜态檔案目錄,css,js, image等</code>

<code>└── templates             </code><code>#靜态頁面存放目錄</code>

<code>   </code><code>├── asset           </code><code>#asset功能子產品頁面存放目錄</code>

<code>    </code><code>│  └── index.html</code>

<code>    </code><code>├── index.html         </code><code>#首頁</code>

<code>    </code><code>└── user                        </code>

<code>        </code><code>└── index.html</code>

[root@yang-218 yangyun]# cat run.py

<code>from</code> <code>flask </code><code>import</code> <code>Flask</code>

<code>from</code> <code>asset </code><code>import</code> <code>asset</code>

<code>from</code> <code>user </code><code>import</code> <code>user</code>

<code> </code> 

<code>apple</code><code>=</code><code>Flask(__name__,</code>

<code>        </code><code>template_folder</code><code>=</code><code>'templates'</code><code>, </code><code>#指定模闆路徑,可以是相對路徑,也可以是絕對路徑。 </code>

<code>        </code><code>static_folder</code><code>=</code><code>'static'</code><code>,  </code><code>#指定靜态檔案字首,預設靜态檔案路徑同字首</code>

<code>        </code><code>#static_url_path='/opt/auras/static',     #指定靜态檔案存放路徑。</code>

<code>         </code><code>)</code>

<code>apple.register_blueprint(asset,url_prefix</code><code>=</code><code>'/asset'</code><code>)    </code><code>#注冊asset藍圖,并指定字首。</code>

<code>apple.register_blueprint(user)      </code><code>#注冊user藍圖,沒有指定字首。</code>

<code>if</code> <code>__name__</code><code>=</code><code>=</code><code>'__main__'</code><code>:</code>

<code>         </code><code>apple.run(host</code><code>=</code><code>'0.0.0.0'</code><code>,port</code><code>=</code><code>8000</code><code>,debug</code><code>=</code><code>True</code><code>)  </code><code>#運作flask http程式,host指定監聽IP,port指定監聽端口,調試時需要開啟debug模式。</code>

其它的功能子產品配置相似

1) __init__.py檔案配置

[root@yang-218 asset]# cat __init__.py

<code>from</code> <code>flask </code><code>import</code> <code>Blueprint</code>

<code>asset</code><code>=</code><code>Blueprint(</code><code>'asset'</code><code>,</code>

<code>        </code><code>__name__,</code>

<code>        </code><code>#template_folder='/opt/auras/templates/',   #指定模闆路徑</code>

<code>         </code><code>#static_folder='/opt/auras/flask_bootstrap/static/',#指定靜态檔案路徑</code>

<code>                   </code><code>)</code>

<code>import</code> <code>views</code>

2) views.py檔案配置

[root@yang-218 asset]# cat views.py

<code>from</code> <code>flask </code><code>import</code>  <code>render_template</code>

<code>@asset</code><code>.route(</code><code>'/'</code><code>)              </code><code>#指定路由為/,因為run.py中指定了字首,浏覽器通路時,路徑為http://IP/asset/</code>

<code>def</code> <code>index():                         </code>

<code>         </code><code>print</code><code>'__name__'</code><code>,__name__</code>

<code>         </code><code>returnrender_template(</code><code>'asset/index.html'</code><code>)  </code><code>#傳回index.html模闆,路徑預設在templates下</code>

3)前端頁面配置

<code>[root@yang-218 yangyun]</code><code># echo 'This isasset index page...' &gt;templates/asset/index.html</code>

此處配置和上述asset的配置一緻

1) __init__.py配置

[root@yang-218 yangyun]# cat  user/__init__.py

<code>user</code><code>=</code><code>Blueprint(</code><code>'user'</code><code>,</code>

<code>                   </code><code>__name__,</code>

2) views.py配置

[root@yang-218 yangyun]# cat user/views.py

<code>@user</code><code>.route(</code><code>'/'</code><code>)</code>

<code>def</code> <code>index():</code>

<code>         </code><code>returnrender_template(</code><code>'user/index.html'</code><code>)</code>

3) 靜态頁面配置

<code>echo</code> <code>'This is User page....'</code>  <code>&gt;templates</code><code>/user/index</code><code>.html</code>

主要作用是記錄需要的依賴包,新環境部署時安裝如下依賴包即可,pip安裝指令: pip install -r requirements.txt

<code>[root@yang-218 yangyun]</code><code># catrequirements.txt</code>

<code>Flask==0.10.1</code>

<code>Flask-Bootstrap==3.3.5.6</code>

<code>Flask-Login==0.2.11</code>

<code>Flask-SQLAlchemy==2.0</code>

<code>Flask-WTF==0.12</code>

後端運作程式

<code>[root@yang-218 yangyun]</code><code># python run.py</code>

<code> </code><code>*Running on http:</code><code>//0</code><code>.0.0.0:8000/ (Press CTRL+C to quit)</code>

<code> </code><code>*Restarting with stat</code>

前端通路asset頁面

<a href="http://s3.51cto.com/wyfs02/M00/73/4D/wKioL1X6FUTg52DlAABF2vmZqMA453.jpg" target="_blank"></a>

前端通路user頁面

<a href="http://s3.51cto.com/wyfs02/M00/73/50/wKiom1X6EwyDfQ7XAABu-gqfM60350.jpg" target="_blank"></a>

為什麼出現404?因為在run.py裡沒有指定字首,是以url裡不需要加user。

<a href="http://s3.51cto.com/wyfs02/M01/73/4D/wKioL1X6FUSyI3DjAAA7JI0SKS0527.jpg" target="_blank"></a>

 以上

     本文轉自楊雲1028 51CTO部落格,原文連結:http://blog.51cto.com/yangrong/1695562,如需轉載請自行聯系原作者