Flask学习之旅——3 视图高级

Flask学习之旅——3 视图高级

前言

  • 本文为《知了传课—— 视图高级》的学习笔记。

蓝图

为什么使用蓝图?

  • 当项目比较大或者代码比较多的时候,让所有的url和视图函数放在同一个文件夹里,这样的结构显然不太合理。
  • 蓝图可以让我们的url和视图函数放在不同的文件里,使我们的结构更加的合理。
  • 使用蓝图的好处:方便代码的维护,开发项目进行分工合作。

蓝图的使用

Blueprint

  • 在使用蓝图时,我们需要用到Blueprint,这是一个存储视图方法的容器。

  • Blueprint具有如下属性:

    • 一个项目可以具有多个Blueprint

    • 可以将一个Blueprint注册到任何一个未使用的的URL比如"/"、"/sample/" 或者子域名

    • Blueprint可以单独具有自己的模板、静态文件或者其它的通过操作方法,它并不是必须要实现应用的视图和函数

  • 创建蓝图(book.py)

    from flask import Blueprint
    # url_prefix: 127.0.0.1:5000/book
    bp = Blueprint("book",__name__,url_prefix="/book")
    @bp.route('/list')   ###对应的地址为:127.0.0.1:5000/book/list
    def book_list():
        return "图书列表"
    
  • 引用蓝图(app.py)

    from apps.book import bp as book_bp  #引入book.py 里的 bp,为了区分重命名为 book_bp
    app = Flask(__name__)
    app.register_blueprint(book_bp)
    

使用静态文件

  • 在默认情况下,Flask会在项目的static文件夹中寻找静态文件。

  • 在初始化蓝图的时候,Blueprint这个构造函数,有一个参数static_folder可以指定静态文件的路径,路径可以是一个相对于蓝图的路径,也可以是绝对路径,如:

    bp = Blueprint('book',__name__,url_prefix='/book',static_folder='static')
    
  • 如果静态文件是在蓝图文件所在目录下,在模板中引用则需写蓝图名.static

      <link href="{{ url_for('book.static',filename='book.css') }}">
    

使用模板文件

  • 在默认情况下,Flask会在项目的templates文件夹中寻找模板文件。

  • 在构造函数Blueprint中有一个template_folder参数可以设置模板的路径

    bp = Blueprint('book',__name__,url_prefix='/book',template_folder='templates')
    
    • 注意:在使用以上代码的情况下,Flask还是会去先项目根目录下的templates文件夹中查找模板文件,如果找到了就直接返回,如果没有找到,才会去蓝图文件所在的目录下的templates文件夹中寻找。
  • 默认情况下使用

    from flask import Blueprint,render_template
    # url_prefix: 127.0.0.1:5000/book
    bp = Blueprint("book",__name__,url_prefix="/book")
    @bp.route('/list')   ###对应的地址为:127.0.0.1:5000/book/list
    def book_list():
        return render_template("book_list.html")
    

使用url_for生成url

  • url_for生成蓝图的url,使用的格式是:蓝图名称+.+视图函数名称

  • 例如:

    url_for('book.book_list')
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来程序猿小吕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值