flask 中blueprint的使用笔记

1. 使用蓝图的目的:

结构更加清晰,模块化,可以将相同模块的代码放在同一个文件中,方便管理

2. 基本语法:

  • 在蓝图文件中导入 Blueprintfrom flask import Blueprint

  • 通过类Blueprint()定义蓝图对象

  • 在主 app 文件中注册蓝图 app.register_blueprint(蓝图对象)

3. 前缀

在定义蓝图对象时,可以通过指定参数 url_prefix指定前缀,那么在蓝图下的视图时也要加上这个前缀,如:

```python
from flask import Blueprint

# 创建蓝图
user_bp = Blueprint('user', __name__,url_prefix='/user')


# 定义蓝图(模块)的视图函数
@user_bp.route('/profile/')
def profile():
    return '个人中心页面'


@user_bp.route('/setting/')
def setting():
    return '个人设置页面'
```

那么可以通过 `/user/profile`来访问 个人中心页面

4. 蓝图的模版文件的查找规则:

  • 如果在项目中的 templates 文件夹中有相应的模版文件,就直接使用

  • 如果没有找到,就在定义蓝图的模版文件中查找,定义模版文件时,可以是相对路径,相对的是这个蓝图文件的文件夹

5. 蓝图中的静态文件寻找规则

* 在模版文件中加载静态文件,如果使用 `url_for("static",filename="xxx")`的方式,
会在项目的 `static` 文件夹下查找
* 如果使用 `url_for('bp.static',filename='xxx')` 会在 这个蓝图定义的
  `static_flolder` 这个文件中查找

6. url_for() 在有蓝图的app中的注意事项:

  • 在使用 url_for 反转在蓝图中的视图函数的时候,endpoint字符串中需要加上 蓝图的名字,比如:url_for('news.list') 得到的是 news 这个蓝图中的 list 这个视图函数的路由

  • 即使在 蓝图定义的视图函数中使用,也要指定蓝图的名字

蓝图子域名实现

  1. 使用蓝图技术

  2. 在定义蓝图时,可以通过 subdomain 指定 子域名,格式为: 子域名字符串.主域名

  3. 在主 app 文件中配置 app.config['SERVER_NAEME'],例如:

    app.config['SERVER_NAME'] = 'ck.com:5000'   # 配置域名
    
    

    注意:

    • IP 地址 没有子域名
    • localhost 也没有子域名
  4. 如果本地测试,需要修改 host 文件,例如:

    127.0.0.1 ck.com
    127.0.0.1 cms.ck.com
    

    域名与子域名都要做映射

你可能感兴趣的:(flask 中blueprint的使用笔记)