• flask blueprint


    在使用flask进行一个项目编写的时候,可能会有许多个模块,如一个网站的前台(home)和后台(admin)模块,如果把这两个模块都放在一个views.py文件之中,那么最后views.py文件必然臃肿不堪,并且不易维护,因此flask中便有了blueprint的概念,可以分别定义模块的视图、模板、视图等等,我们可以使用blueprint进行不同模块的编写,不同模块之间有着不同的静态文件、模板文件、view文件,十分方便代码的维护和管理。示例如下:

    目录结构:

    admin下__init__.py和views.py

    __init__.py
    
    #!/usr/bin/env python
    #-*-coding:utf-8-*-
    
    ##定义蓝图
    from flask import Blueprint
    
    adminbapp = Blueprint("admin",__name__)         #adminbapp为蓝图的名称,不能和模块名称相同,否则会报错
    
    import admin.views
    
    views.py #!/usr/bin/env python #-*-coding:utf-8-*- from . import adminbaqq          #.可以理解为__init__.py @adminbapp.route() def index(): return "admin.index"

    home下__init__.py和views.py

    __init__.py
    
    #!/usr/bin/env python
    #-*-coding:utf-8-*-
    
    ##定义蓝图
    from flask import Blueprint
    
    homebapp = Blueprint("admin",__name__)         #home为蓝图的名称
    
    import home.views
    
    
    views.py
    
    #!/usr/bin/env python
    #-*-coding:utf-8-*-
    
    from . import home
    
    @homebapp.route()
    def index():
        return "home.index"

    注册蓝图对象(主程序文件,本例为movie_project文件)

    from flask import Flask
    
    app = Flask(__name__)       #实例化flask
    app.debug = True
    
    #导入蓝图对象(from 文件夹 import 定义的蓝图名称(本例在_init__中定义的))
    from admin import adminbap as admin_blueprint
    from home import homebapp as home_blueprint
    
    #注册(对象名称(蓝图名称),url前缀)
    app.register_blueprint(home_blueprint)                    #前台首页不需要设置后缀
    app.register_blueprint(admin_blueprint,url_prefix='/admin')         #后台登录设置一下前缀
    
    
    @app.route('/')
    def hello_world():
        return 'Hello World!'
    
    
    if __name__ == '__main__':
        app.run()

    编写入口脚本(可有可无)

     manage.py

    #!/usr/bin/env python
    #-*-coding:utf-8-*-
    
    from movie_project import app   #从movie_project中导入app,也可以写成__init__.py
    
    
    if __name__ == '__main__':
        app.run()
  • 相关阅读:
    面向对象继承
    webpack 错误提示 Error: Can't resolve 'css-loader'或Error: Can't resolve 'style-loader'
    Math.min() Math.max()
    表单
    addEventListener()
    H5图片背景
    ruby获取最新ruby
    js对象拷贝
    Oh-My-Zsh 下远程ssh的乱码问题
    MSSQL、MySQL 数据库删除大批量千万级百万级数据的优化
  • 原文地址:https://www.cnblogs.com/FRESHMANS/p/8493719.html
Copyright © 2020-2023  润新知