美文网首页
flask 中blueprint的使用笔记

flask 中blueprint的使用笔记

作者: 宽哥好 | 来源:发表于2019-11-26 11:18 被阅读0次

    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的使用笔记

          本文链接:https://www.haomeiwen.com/subject/faddmctx.html