zoukankan      html  css  js  c++  java
  • 第九篇 蓝图 blueprint

    在Flask中的蓝图 blueprint 的作用就是将 功能 与 主服务 分开

    比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_user)模块, 然后又加入了一个删除客户的功能(del_user)模块,然后又加入了一个修改客户的功能(up_user)模块,在这个系统中,就可以将

    查看客户,修改客户,添加客户,删除客户   四个功能做成蓝图加入到客户管理系统中

    初识蓝图

    如何理解蓝图:其实我们可以理解成一个没有run方法和config配置的的Flask对象,这个理论虽然有很多的漏洞,但是对于刚接触蓝图来说,就这么样理解,没有错

    1.在上一篇原基础上传建一个文件夹user_app项目, 文件夹结构如下

    user_app中写入

    from flask import Blueprint    # 导入 Flask 中的蓝图 Blueprint 模块
    from flask import render_template
    
    user_blue = Blueprint("user", __name__, template_folder="user_temp", url_prefix="/user")
    # 实例化一个蓝图(Blueprint)对象
    # 模板文件放在user_temp文件夹下, url访问时候较多加一个前缀/user
    
    @user_blue.route('/user_list')  # url访问      /user/user_list
    def user_list():
        return render_template("user_list.html")

    app.py文件中注册一下

    from users_app import user
    
    app.register_blueprint(user.user_blue)  # 注册蓝图

    user_lsit.html 中就写入了一个h1标签

    <h1>这里是user_list页面</h1>

    此时访问浏览器     路由是 /user/user_lsit

     很明显,我们没有在Flask对象中添加路由,但是我们注册了有路由和视图函数的user_blue蓝图对象

    总结

    Blueprint 其实可以理解为一个了没有run方法的 Flask 对象

    只要Blueprint被 Flask 注册了,就一定会生效

    2.修改user.py,并在user_app目录下添加一张图片

    from flask import Blueprint  # 导入 Flask 中的蓝图 Blueprint 模块
    from flask import render_template, send_file
    
    user_blue = Blueprint("user", __name__, template_folder="user_temp", url_prefix="/user")
    
    
    # 实例化一个蓝图(Blueprint)对象
    # 模板文件放在user_temp文件夹下, url访问时候较多加一个前缀/user
    
    
    @user_blue.route('/user_list')  # url访问      /user/user_list
    def user_list():
        return render_template("user_list.html")
    
    
    @user_blue.route('/picture')  # /user/picture
    def picture():  
        return send_file("users_app\111.jpg")   # 图片路径
    修改后的user.py

    url中访问    /user/picture

    从这个例子中我们总结出:

    Blueprint 其实可以理解为一个了没有run方法的 Flask 对象

    只要Blueprint被 Flask 注册了,就一定会生效

    坑来了!坑来了!

    蓝图内部的视图函数及route不要出现重复,否则~你们自己试试吧

    蓝图简单应用

  • 相关阅读:
    C#转义字符,以及@的作用
    建立数据库链接 create database link以及synonym
    Oracle11g密码区分大小写导致database link无法连接
    ES5:深入解析如何js定义类或对象。
    jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
    浅析JavaScript访问对象属性和方法及区别
    Angular ui-router的常用配置参数详解
    Angular 通过constant(name,value),value(name,value)创建服务
    Angular ocLazyLoad 与ui-router的配合使用
    AngularJs指令配置参数scope详解
  • 原文地址:https://www.cnblogs.com/clbao/p/10134051.html
Copyright © 2011-2022 走看看