zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    异步解决方案----Promise与Await
    多页应用 Webpack4 配置优化与踩坑记录
    左侧固定,右侧自适应的布局方式(新增评论区大佬教的方法)
    精读《Epitath 源码
    如何编写 Typescript 声明文件
    状态码具体解释
    LINQ体验(2)——C# 3.0新语言特性和改进(上篇)
    kafka教程
    double x = 10 ,y = 0;y = x % 2; 这个表达式正确吗?
    mongodb mapreduce使用总结
  • 原文地址:https://www.cnblogs.com/FRESHMANS/p/8493719.html
Copyright © 2011-2022 走看看