蓝图用于为应用提供目录划分:

一:上目录结构

二:上代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <h1>用户登录</h1>
<form method="POST">
<input type="text" name="user"/>
<input type="submit" value="提交"/>
</form> <img src="static/code.png"> <img src="{{ url_for('static',filename='code.png') }}"> </body>
</html>

login.html

# -*- coding: utf-8 -*-
# @Author : Felix Wang
# @time : 2018/7/5 13:54 from flask import Blueprint
from flask import render_template
from flask import request # 创建一个蓝图
# template_folder表示找模板的时候可以放在自己的目录找
# url_prefix表示给当前蓝图的url加个前缀,批量操作
account = Blueprint('account', __name__, url_prefix='/acc',template_folder='tpls') @account.route('/login', methods=['GET', 'POST'], endpoint='account')
# 注意蓝图的名字和函数名字不能相同
def login():
# return render_template('login.html')
return render_template('login.html') # 在单个蓝图中定义扩展,只有在当前蓝图中生效
@account.before_request
def process_request(*args,**kwargs):
print('来了')

account.py

# -*- coding: utf-8 -*-
# @Author : Felix Wang
# @time : 2018/7/5 13:58 from flask import Blueprint, render_template blog = Blueprint('blog', __name__) @blog.route('/blog', methods=['GET', 'POST'],endpoint='blog')
def blog2():
# return render_template('blog.html')
return 'blog'

blog.py

# -*- coding: utf-8 -*-
# @Author : Felix Wang
# @time : 2018/7/5 13:59 from flask import Blueprint, session, url_for, redirect user = Blueprint('user', __name__) @user.route('/user', methods=['GET', 'POST'], endpoint='user')
# 蓝图和函数不能重名,因为重名的话,导入就不知道导入哪个了
def user2():
# return render_template('user.html')
return 'user' # 使用扩展来解决登录问题,比用装饰器好,每次访问之前都执行,使用蓝图之后就不用设置白名单了
# 因为扩展只对当前蓝图生效
@user.before_request
def process_request(*args, **kwargs):
user = session.get('user_info')
if user:
return None
url = url_for('l1') # 根据别名生成url
return redirect(url)

user.py

# -*- coding: utf-8 -*-
# @Author : Felix Wang
# @time : 2018/7/5 13:51 from flask import Flask app = Flask(__name__, template_folder='templates', static_folder='static', static_url_path='/static') from .views.account import account
from .views.blog import blog
from .views.user import user # 注册蓝图
app.register_blueprint(account)
app.register_blueprint(blog)
app.register_blueprint(user) # 在app这添加扩展,对所有注册的蓝图都生效
@app.before_request
def process_request(*args, **kwargs):
print('来了')

__init__.py

# -*- coding: utf-8 -*-
# @Author : Felix Wang
# @time : 2018/7/5 13:50 from pro_flask import app if __name__ == '__main__':
app.run()

run.py

简单的蓝图(小型的应用程序):下载

相关链接

flask框架(十一): 蓝图的更多相关文章

  1. Python-S9-Day116——Flask框架相关

    01 内容回顾 02 Flask框架:路由和视图(一) 03 Flask框架:路由和视图(二) 04 Flask框架:路由和视图(三) 05 Flask框架:路由和视图(四) 06 Flask框架:s ...

  2. Python框架学习之Flask中的蓝图与单元测试

    因为Flask框架的集成度很低,随着Flask项目文件的增多,会导致不太好管理.但如果对一个项目进行模块化管理的,那样子管理起来就会特别方便.而在Flask中刚好就提供了这么一个特别好用的工具蓝图(B ...

  3. 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化

    使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...

  4. flask框架(七)——蓝图、请求上下文、g对象、信号、flask_session

    蓝图 作用:对程序进行目录结构划分 不使用蓝图情况下,自己分文件 目录结构: -templates -views -__init__.py -user.py -order.py -app.py app ...

  5. Flask框架(三)—— 请求扩展、中间件、蓝图、session源码分析

    Flask框架(三)—— 请求扩展.中间件.蓝图.session源码分析 目录 请求扩展.中间件.蓝图.session源码分析 一.请求扩展 1.before_request 2.after_requ ...

  6. python flask框架 蓝图的使用

    蓝图的目的是实现 各个模块的视图函数写在不同的py文件当中. 主视图 中 导入 分路由视图的模块,并且注册蓝图对象 分路由视图中 利用 蓝图对象 的route 进行装饰视图函数 主路由视图函数: #c ...

  7. python框架之Flask(3)-Blueprint(蓝图)

    蓝图 用途 给开发者提供清晰的目录结构. 使用 目录结构 1.创建项目. 2.在项目目录下创建与项目名同名文件夹. 3.在 test_prj 文件夹下创建 __init__.py 文件,并在其中实例化 ...

  8. Flask框架

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

  9. Flask框架搭建REST-API服务

    一.目的 为了能够将测试工具部署成RESTful-API服务,这样就能通过接口的方式提供统一测试工具服务,使用人员就不用构建application而产生的各种环境问题.使用问题. 适合人群:Pytho ...

  10. Flask路由与蓝图Blueprint

    需求分析: 当一个庞大的系统中有很多小模块,在分配路由的时候怎么处理呢?全部都堆到一个py程序中,调用@app.route? 显然这是很不明智的,因为当有几十个模块需要写路由的时候,这样程序员写着写着 ...

随机推荐

  1. Django模板(Template)系统

    Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} 变量名由字母数字和下划线组成. 点 ...

  2. Wannafly挑战赛24

    A. 石子游戏 Alice和Bob在玩游戏,他们面前有n堆石子,对于这些石子他们可以轮流进行一些操作,不能进行下去的人则输掉这局游戏.可以进行两种操作:1. 把石子数为奇数的一堆石子分为两堆正整数个石 ...

  3. .net get set用法

    在早期学习c#的过程中,经常遇到这样的语句: public string StudentName{           get{return stuName;}           set{stuNa ...

  4. ZROIDay3-比赛解题报告

    ZROIDay3-比赛解题报告 瞎扯 从今天开始考试有点不在状态,可能是因为不太适应题目的原因,T1已经接近了思想但是没有想到状态转移,T2思考方向错误,T3不会打LCT,还是太菜了 A 考场上想到要 ...

  5. Nginx作为代理服务之反向代理

    Nginx作为代理服务之反向代理 需求:我们需要访问一个服务,但是服务端只接受8080端口,所以需要在nginx中配置反向代理,帮助客户端代理实现. 1. 创建一个html放入到一个文件夹中 2. 在 ...

  6. vue2.0+按需引入element-ui报错

    项目使用vue脚手架自动生成的,vue版本为^2.5.16.项目中需要按需使用element-ui,根据element-ui的官方文档,一开始在babel.config.js文件中修改配置 modul ...

  7. fastadmin 中 selectpage.js位置

    备注: //特殊字段处理 因为接收到input中的属性名会被转成小写所以增加了一对键值 keyField: 'primarykey' $.each({data: 'source', keyField: ...

  8. Web自动化测试中的接口测试

    1.2.3 接口可测性分析 接口显而易见要比UI简单的都,只需要知道协议和参数即可完成一次请求,从自动化测试实施难易程度来看,有以下几个特征: 1)驱动执行接口的自动化成本不高:HTTP,RPC,SO ...

  9. Oracle【子查询】

    Oracle子查询:当一个查询依赖于另外一个查询的结果的时候,就需要使用子查询.单行子查询 :筛选条件不明确,需要执行一次查询且查询结果只有一个字段且字段值只有一个.注意:where子句中允许出现查询 ...

  10. JDBC模拟登陆及SQL语句防注入问题

    实现模拟登陆效果:基于表Tencent package boom; import java.sql.Connection; import java.sql.DriverManager; import ...