.idea文件夹是Pycharm IDE的缓存文件,这个是我推荐大家使用的IDE
manage.py 是启动服务的文件,之前我们也把视图路由放在这个文件中,这在实战中是不推荐的,因为如果我们有很多个页面的话,单个manage.py文件都会非常的大,管理和维护起来非常的不方便。
因此我们需要把视图路由独立开来(就是@app.route(“/”)那一部分),在这个时候使用蓝图(blueprint)来划分我们不同的功能模块就显得非常的重要。
什么是蓝图(blueprint)
http://www.zhihu.com/question/31748237/answer/55313054
知乎的答案已经很详细啦,其实简而言之呢就是在同一个app内实现代码的模块化,不同的功能可以封装成不同的Package,管理起来方便的多(有点类似django的app)。
首先我们新建一个名为weixin的python package,然后再在weixin文件夹中新建一个名为admin的python package
在Pycharm中新建的Python Package文件夹下默认有一个init.py的文件,到时我们实例化整个Flask应用,蓝图各个模块的蓝图对象就是在这些文件。
首先我们先在weixin文件夹的根目录下的init.py文件中创建Flask对象(就是将原先写在manage.py中的代码搬到这里)。即:
weixin/init.py 第一部分代码
from flask import Flask
创建一个flask对象
app = Flask(__name__)
接下来我们在weixin下的admin文件夹(即假设我们要开发管理员后台的代码文件夹)中的init.py中创建一个蓝图对象
weixin/admin/init.py
引入blueprint
from flask import Blueprint
创建一个blueprint对象
admin = Blueprint("admin",__name__)
引入视图文件(这里要在admin下创建一个views.py的文件),记得,引入views视图文件一定要在创建蓝图对象的之后
from . import views
对from import的语法不熟悉的朋友建议先熟悉下python先
接下来就要回到weixin下的init.py下注册我们刚才创建的这个admin的蓝图对象了。
weixin/init.py 第二部分代码
从admin包中引入admin并将其赋值给admin_blueprint
from .admin import admin as admin_blueprint
注册蓝图
app.register_blueprint(admin_blueprint, url_prefix='/admin')
register_blueprint是注册蓝图的方法,url_prefix是访问这个蓝图根目录的链接前缀
,像这里把admin作为链接的前缀,那么要访问admin视图文件的根目录的话就是
www.abc.com/admin
接下来我们在视图文件中简单的写一个helloworld的根目录视图函数
weixin/admin/views.py
from . import admin
@admin.route("/")
def index():
return "Hello World!"
在这里要用admin.route而不是app.route,要注意(即对应蓝图的名称)。
然后manage.py文件修改后如下所示
from weixin import app
if __name__ == "__main__":
app.run(debug=True)
接下来在cmd中运行整个应用
python manage.py
就可以看到蓝图注册成功,访问admin时会显示admin下的视图函数。
其实整个蓝图的功能就这么简单,当然如果你不喜欢使用也没关系,但是整个项目到达一定的程度时,使用蓝图会是的视图文件的管理变得相对简单,各蓝图需要引用的其他模块都可以独立开来,所以的小编我个人的建议是最好还是使用这个蓝图。
如无意外的化明天应该会讲一下Flask项目结构中静态文件的管理,有这方面需求的朋友可以继续关注哦!
最后附上这次的源码,其中的venv文件请先删除后再根据自己的环境重新创建,目测本次的源码应该还是兼容Python2的。
链接:http://share.weiyun.com/ead1f3b31420b043890aa8af508ba566 (密码:cYLE)