蓝图

用途

给开发者提供清晰的目录结构。

使用

  • 目录结构

    1、创建项目。

    2、在项目目录下创建与项目名同名文件夹。

    3、在 test_prj 文件夹下创建 __init__.py 文件,并在其中实例化 Flask 并返回。

    from flask import Flask
    
    def create_app():
    app = Flask(__name__)
    return app

    /test_prj/__init__.py

    3、在项目目录下创建 manage.py 文件作为入口,导入 Flask 实例并使用

    from test_prj import create_app
    
    app = create_app()
    
    if __name__ == '__main__':
    app.run()

    /manage.py

    4、在项目同名文件夹下创建 views 文件夹用来存放视图文件。

  • 引入蓝图

    5、在 views 文件夹下编写视图相关代码。比如新建一个用户逻辑相关视图,并引入蓝图。

    # 引入蓝图
    from flask import Blueprint # 实例化
    usr = Blueprint('usr', __name__) # 编写视图函数
    @usr.route('/login')
    def login():
    return 'login' @usr.route('/logout')
    def logout():
    return 'logout'

    /test_prj/views/user.py

    6、在 /test_prj/__init__.py 中给 Flask 实例注册蓝图。

    from flask import Flask
    from .views.user import usr def create_app():
    app = Flask(__name__)
    app.register_blueprint(usr)
    return app

    /test.prj/__init__.py

    7、接下来就可以正常运行访问了。

  • 模板使用

    8、在项目同名文件夹下创建 templates 目录。

    9、在 templates 目录下新建登录模板,修改视图。

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>login</title>
    </head>
    <body>
    <h2>登录</h2>
    </body>
    </html>

    /test_prj/templates/login.html

    # 引入蓝图
    from flask import Blueprint,render_template # 实例化
    usr = Blueprint('usr', __name__) # 编写视图函数
    @usr.route('/login')
    def login():
    return render_template('login.html') @usr.route('/logout')
    def logout():
    return 'logout'

    /test_prj/views/user.py

补充

前缀

可以在注册蓝图时通过 url_prefix 属性加上访问该蓝图时的前缀。

app.register_blueprint(admin, url_prefix='/admin')

蓝图装饰器

可以让装饰器只对指定蓝图生效,例如:

from flask import Blueprint, render_template

usr = Blueprint('usr', __name__)

@usr.before_request
def before_request_func():
print('from before_request_func')

指定静态&模板目录

from flask import Blueprint

web = Blueprint(
'web',
__name__,
template_folder='templates',
static_folder='static'
)

我测试时好像只对下面的大蓝图适用。

大蓝图

这里说的大蓝图就是对目录结构再更细粒度的划分了,附上示例地址。

https://github.com/zze326/flask_blueprint_pro.git

python框架之Flask(3)-Blueprint(蓝图)的更多相关文章

  1. flask之Blueprint蓝图

    flask_Blueprint.py ''' flask中的Blueprint蓝图: (1)新建模块,例如Bp1.py,Bp2.py,在模块中创建蓝图实例 (2)通过app.register_blue ...

  2. python框架之Flask

    介绍:Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . WSGl:Web Server Gateway ...

  3. python框架之Flask(1)-Flask初使用

    Flask是一个基于 Python 开发并且依赖 jinja2 模板和 Werkzeug WSGI 服务的一个微型框架,对于 Werkzeug 本质是 Socket 服务端,其用于接收 http 请求 ...

  4. python框架之Flask(6)-flask-sqlalchemy&flask-script&flask-migrate使用

    整合SQLAlchemy 安装 pip3 install flask-sqlalchemy 简单使用 from flask import Flask from flask_sqlalchemy imp ...

  5. python框架之Flask基础篇(二)-------- 数据库的操作

    1.flask连接数据库的四步: 倒入第三方数据库扩展包:from flask_sqlalchemy import SQLAlchemy 配置config属性,连接数据库: app.config[&q ...

  6. python框架之Flask(2)-路由和视图&Session

    路由和视图 这一波主要是通过看源码加深对 Flask 中路由和视图的了解,可以先回顾一下装饰器的知识:[装饰器函数与进阶] 路由设置的两种方式 # 示例代码 from flask import Fla ...

  7. python框架之Flask(4)-上下文管理

    知识储备 偏函数 作用 偏函数,帮助开发者自动传递参数. 使用 import functools def index(a1, a2): return a1 + a2 # 原来的调用方式 # ret = ...

  8. python框架之Flask(5)-@app.before_request原理

    示例 from flask import Flask app = Flask(__name__) @app.before_request def xx(): pass @app.route('/') ...

  9. python框架之Flask基础篇(一)

    一.第一个hello world程序 # coding=utf-8 from flask import Flask app = Flask(__name__) @app.route('/') def ...

随机推荐

  1. Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理

    Atitit 管理的模式扁平化管理  金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理 1.1. 矩阵管理 1 1.2. 相关信息 矩阵的历史 1 1.3. 基于“ ...

  2. [转]让iframe自适应高度-真正解决

    原文地址:https://www.cnblogs.com/rogge7/p/7762052.html 需求:实现 iframe 的自适应高度,能够随着页面的长度自动的适应以免除页面和 iframe 同 ...

  3. R语言 ggplot2包

    R语言  ggplot2包的学习   分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...

  4. Aspose.Words使用技巧

    咨询个问题啊,我在使用aspose生成word,遇到了两个问题,一个是用aspose自动生成的目录的字体与标题的字体一致,但是用户不想他们一致,如何修改:二是,用户只想在正文部分显示页码,目录等页面不 ...

  5. LeetCode - 766. Toeplitz Matrix

    A matrix is Toeplitz if every diagonal from top-left to bottom-right has the same element. Now given ...

  6. C# 不安装Oracle客户端情况下,如何连接到Oracle数据库

    简介: 在我们开发应用场景经常碰到需要连接Oracle数据库,这也是相当常见的一种情况.一般.Net环境连接Oracle数据库,可以通过TNS/SQL.NET 配置文件,而 TNS 必须要 Oracl ...

  7. [原][openstack-pike][controller node][issue-4][horizon] dashboard access too low reasons[dashboard 访问太慢]

    本文持续更新... 原因一:  访问dashboard 很慢. 输入了用户名和密码还有project后,一直处于首页状态,等很久才进入(暂且不考虑硬件.硬件暂时假设都满足条件) 首先想到的是memca ...

  8. python nose测试框架全面介绍十二 ----用例执行顺序打乱

    在实际执行自动化测试时,发现我们的用例在使用同一个资源的操作时,用例的执行顺序对测试结果有影响,在手工测试时是完全没法覆盖的. 但每一次都是按用例名字来执行,怎么打乱来执行的. 在网上看到一个有意思的 ...

  9. Spring Security默认的用户登录表单 页面源代码

    Spring Security默认的用户登录表单 页面源代码 <html><head><title>Login Page</title></hea ...

  10. 用memset设置无穷大无穷小

    memeset是以字节为单位进行赋值的,对字符数组可以直接用. 但对于int数组就不行了. 但设置无穷大来说有个技巧: 如果我们将无穷大设为0x3f3f3f3f,那么奇迹就发生了,0x3f3f3f3f ...