天天看点

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,如需转载请自行联系原作者