flask框架(十一): 蓝图
蓝图用于为应用提供目录划分:
一:上目录结构
二:上代码
<!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框架(十一): 蓝图的更多相关文章
- Python-S9-Day116——Flask框架相关
01 内容回顾 02 Flask框架:路由和视图(一) 03 Flask框架:路由和视图(二) 04 Flask框架:路由和视图(三) 05 Flask框架:路由和视图(四) 06 Flask框架:s ...
- Python框架学习之Flask中的蓝图与单元测试
因为Flask框架的集成度很低,随着Flask项目文件的增多,会导致不太好管理.但如果对一个项目进行模块化管理的,那样子管理起来就会特别方便.而在Flask中刚好就提供了这么一个特别好用的工具蓝图(B ...
- 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化
使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(一)——创建应用 使用 Flask 框架写用户登录功能的Demo时碰到的各种坑(二)——使用蓝图功能进行模块化 使用 Flask 框架写用 ...
- flask框架(七)——蓝图、请求上下文、g对象、信号、flask_session
蓝图 作用:对程序进行目录结构划分 不使用蓝图情况下,自己分文件 目录结构: -templates -views -__init__.py -user.py -order.py -app.py app ...
- Flask框架(三)—— 请求扩展、中间件、蓝图、session源码分析
Flask框架(三)—— 请求扩展.中间件.蓝图.session源码分析 目录 请求扩展.中间件.蓝图.session源码分析 一.请求扩展 1.before_request 2.after_requ ...
- python flask框架 蓝图的使用
蓝图的目的是实现 各个模块的视图函数写在不同的py文件当中. 主视图 中 导入 分路由视图的模块,并且注册蓝图对象 分路由视图中 利用 蓝图对象 的route 进行装饰视图函数 主路由视图函数: #c ...
- python框架之Flask(3)-Blueprint(蓝图)
蓝图 用途 给开发者提供清晰的目录结构. 使用 目录结构 1.创建项目. 2.在项目目录下创建与项目名同名文件夹. 3.在 test_prj 文件夹下创建 __init__.py 文件,并在其中实例化 ...
- Flask框架
FLask框架的简单介绍 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请 ...
- Flask框架搭建REST-API服务
一.目的 为了能够将测试工具部署成RESTful-API服务,这样就能通过接口的方式提供统一测试工具服务,使用人员就不用构建application而产生的各种环境问题.使用问题. 适合人群:Pytho ...
- Flask路由与蓝图Blueprint
需求分析: 当一个庞大的系统中有很多小模块,在分配路由的时候怎么处理呢?全部都堆到一个py程序中,调用@app.route? 显然这是很不明智的,因为当有几十个模块需要写路由的时候,这样程序员写着写着 ...
随机推荐
- Spring Boot源码分析-启动过程
Spring Boot作为目前最流行的Java开发框架,秉承"约定优于配置"原则,大大简化了Spring MVC繁琐的XML文件配置,基本实现零配置启动项目. 本文基于Spring ...
- PowerBI 实现不同角色看到内容不同支持动态权限管理
首先,在PowerBIDesktop中进行设计,先设计一个权限表: 具体权限如下: 也就是说,这些用户账号在PowerBIService登录时,会分别代表这些用户,接下来会使用一个很重要的动态函数:U ...
- Winform_chart控件_心得
效果图: 1.首先,在工具箱找到chart控件,拖到窗体中. 2.关于chart控件的细节设计: series集合设计: chartType可以选择折线图.柱状图.圆饼图等等. isValueShow ...
- .net下载文件的方法
最近做项目遇到文件下载的问题,原本采用的是直接用一个href链接到需要下载的文件来处理这个问题,后来发现,如果文件是一个图片,浏览器会自动打开图片而不是下载,需要用户右击另存为才可以下载,很不友好,后 ...
- 基于SQL Server日志链查看数据库insert/update/delete操作(一)
在MSSQLServer2008下的语句 不同版本可能语句会有微小差别 SELECT [Slot ID], [Transaction ID], Operation, AllocUnitName, [C ...
- java写webservice接口
有一个需求:要求根据设备mac和终端设备类型来查询设备库存状态. 接口协议是采用webservice协议,信息交互方式为xml格式信息 输入参数存放到XML各个节点下,并转为一个String,作为接口 ...
- mysql使用存储过程,批量生成测试数据
1.存储过程代码 delimiter $$DROP PROCEDURE IF EXISTS create_service_data$$create procedure create_service_d ...
- OpenResty 执行流程阶段
nginx有11个处理阶段,如下图所示: 指令 所处处理阶段 使用范围 解释 init_by_luainit_by_lua_file loading-config http nginx Master进 ...
- 0、CentOS7系统root密码丢失找回方法
第一步 1.重新启动或开启CentOS7.6系统,在选择进入系统的Grub菜单界面如下图1-1,根据提示按"e"小写字母进入编辑界面,如下图1-2所示: 图1-1 CentOS7. ...
- 开源Android 恶意软件Radio Balouch
安全研究机构 ESET 首次发现了开源 Android 间谍软件在 Google Play 上的恶意信息窃取行为,并且在被删除后仍在Google Play 重复出现.据悉,第一个间谍软件是基于开源间 ...