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? 显然这是很不明智的,因为当有几十个模块需要写路由的时候,这样程序员写着写着 ...
随机推荐
- Ruby Rails学习中:网站导航,Bootstrap和自定义的CSS,局部视图
添加一些结构 一.网站导航 1.添加一些结构后的网站布局文件 打开文件:app/views/layouts/application.html.erb 简单介绍一下,添加的代码: 我们从上往下看一下这段 ...
- DashBoard-身份验证
dashboard1.7.1版本之后,新增了用户登录认证的功能. 默认dashboard会跳转到登录页面: 我们可以看到dashboard提供了Kubeconfig和token两种登录方式,我们可以直 ...
- 牛客 40F 珂朵莉的约数 (莫队)
珂朵莉给你一个长为n的序列,有m次查询 每次查询给两个数l,r 设s为区间[l,r]内所有数的乘积 求s的约数个数mod 1000000007 直接莫队暴力维护复杂度是$O(8m\sqrt{m})$. ...
- java正则表达式的使唤
示例代码: package com.target.start; import java.util.regex.Matcher; import java.util.regex.Pattern; /* * ...
- 进阶Java编程(1)多线程编程
Java多线程编程 1,进程与线程 在Java语言里面最大的特点是支持多线程的开发(也是为数不多支持多线程的编程语言Golang.Clojure方言.Elixir),所以在整个的Java技术学习里面, ...
- How to enable remote connections to SQL Server
<img src="https://miro.medium.com/max/1400/1*18lrHvJ8YtADJDT7hxIThA.jpeg" class="g ...
- 富文本二进制转换成string
].KindExplain); ) { explainString = explainString.Substring(, explainString.IndexOf() + , explainStr ...
- List 集合 一行4个排序
List<string> list = new List<string>(); ; i < ; i++) { list.Add(i.ToString()); } int ...
- Docker ASPNetCore https 四步教你搭建一个网站
序 本教程需要有自己已经申请好的证书 ,没有证书请参照官方教程. Docker 就不多说了,咱只要知道怎么用先. 环境 core:asp net core 2.2 开发机:win10 LTS 服务器: ...
- axios+post获取并下载后台返回的二进制流
axios+post获取并下载后台返回的二进制流 let url = $.getCookie('prefixUrl')+'/expenseword/exportWords'; let vm = thi ...