python-flask复习——(六) Flask蓝图目录、Flask-SQLAlchemy、Flask-Script、Flask-Migrate

一、Flask蓝图目录我们之前写的Flask项目都是自己组织的目录结构,其实Flask官方有其推荐的目录结构,以下就是一个符合官方推荐的Flask小型应用的项目结构目录示例,如下:  如图,这就是我们建立好的一个目录结构,一层一层的看一下,首先是app目录,它就是我们的主应用程序目录了,其中有一个__init__.py文件,里面的内容如下:  app/init.pyfrom flask import Flaskfrom .views.acc import acc_bpfrom .views.
摘要由CSDN通过智能技术生成
一、Flask蓝图目录

我们之前写的Flask项目都是自己组织的目录结构,其实Flask官方有其推荐的目录结构,以下就是一个符合官方推荐的Flask小型应用的项目结构目录示例,如下:

在这里插入图片描述
  如图,这就是我们建立好的一个目录结构,一层一层的看一下,首先是app目录,它就是我们的主应用程序目录了,其中有一个__init__.py文件,里面的内容如下:
  
app/init.py

from flask import Flask
from .views.acc import acc_bp
from .views.user import user_bp

def create_app():
    my_app = Flask(__name__)
    my_app.register_blueprint(acc_bp)
    my_app.register_blueprint(user_bp)

    return my_app

app/__init__.py

__init__.py就是构建app的一个函数,并且将views中的蓝图注册进去了。

接下来看static目录,这个目录从字面意思就可以理解了,是我们的static静态文件存放目录。

然后就是templates目录,即模板存放目录。

views目录,主角终于登场了,这里存放的就是视图函数文件,也就是我们Blueprint,每一个文件就是一个Blueprint,如下:
views/acc.py

from flask import Blueprint

acc_bp = Blueprint('acc', __name__)

@acc_bp.route("/acc")
def accfunc():
    return "my_app.acc"

views/acc.py

views/user.py

from flask import Blueprint

user_bp = Blueprint('user', __name__)

@user_bp.route("/login")
def user_login():
    return "my_app.user"

views/user.py

接下来就是关键性的一个文件manager.py,项目的启动文件,内容如下:

manager.py

from app import create_app

my_app = create_app()

if __name__ == '__main__':
    my_app.run()

manager.py

创建API蓝图,定义路由规则:

""" rmon.views.urls

定义了所有 API 对应的 URL
"""

from flask import Blueprint

from rmon.views.index import IndexView

# 创建 API 蓝图
api = Blueprint('api', __name__)

# 蓝图的 add_url_rule 方法定义路由及其视图函数
# 第一个参数为路径,第二个参数为视图函数
# 自定义 as_view 的参数作为视图函数名
# 例如浏览器使用 GET 方法访问主页时,由 IndexView 类中的 get 方法处理请求
api.add_url_rule('/', view_func=IndexView.as_view('index'))

上面的代码中,我们使用了 Flask 的蓝图 Blueprint 定义了路由规则。对于蓝图 Blueprint 可以理解为 Flask 子应用一个 Blueprint 可以有自己的 URL 路由规则,自己的静态文件目录等。在这里我们定义了一个名为 api 的蓝图,然后通过 api.add_url_rule 方法添加了 IndexView 视图控制器对应的路由 URL,也就是 / 。也就是说我们通过 GET HTTP 方法访问 URL / 时就会执行 IndexView 中对应的 get 方法。

还需要注意的是在 Flask 中我们可以通过 flask.url_for 方法生成某一个视图函数的对应的 URL,那么在这里怎么样通过 url_for 生成 IndexView 对应的 URL 呢?只需要执行 url_for('api.index') 就可以。其中 api.index 参数由两部分组

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值