Flask中路由系统以及蓝图的使用
一、Flask的路由系统
1.@app.route()装饰器中的参数
methods:当前URL地址,允许访问的请求方式
@app.route("/info", methods=["GET", "POST"])
def student_info():
stu_id = int(request.args["id"])
return f"Hello Old boy {stu_id}" #格式化输出
endpoint:反向RUL地址,默认位视图函数名(url_for)
from flask import url_for @app.route("/info", methods=["GET", "POST"], endpoint="r_info")
def student_info():
print(url_for("r_info")) # /info
stu_id = int(request.args["id"])
return f"Hello Old boy {stu_id}" # 格式化输出
defaults:视图函数的参数默认值
from flask import url_for @app.route("/info", methods=["GET", "POST"], endpoint="r_info", defaults={"nid": 100})
def student_info(nid):
print(url_for("r_info")) # /info
# stu_id = int(request.args["id"])
print(nid) #
return f"Hello Old boy {nid}" # Python3.6的新特性 f"{变量名}格式化输出"
strict_slashes:url地址结尾符"/" 的控制False:无论结尾“/”是否存在均可以访问,True:结尾必须不是“/”
# 访问地址 : /info
@app.route("/info", strict_slashes=True)
def student_info():
return "Hello Old boy info" # 访问地址 : /infos or /infos/
@app.route("/infos", strict_slashes=False)
def student_infos():
return "Hello Old boy infos"
redirect_to:url地址重定向
# 访问地址 : /info 浏览器跳转至 /infos
@app.route("/info", strict_slashes=True, redirect_to="/infos")
def student_info():
return "Hello Old boy info" @app.route("/infos", strict_slashes=False)
def student_infos():
return "Hello Old boy infos"
subdomain:子域名前缀subdomian=“wurenxiansheng”这样写可以得到wurenxiansheng.bokeyuan.com前提是app.config["SERVER_NAME"]="bokeyuan.com"
app.config["SERVER_NAME"] = "bokeyuan.com" @app.route("/info",subdomain="wurenxiansheng")
def student_info():
return "Hello wurenxiansheng info" # 访问地址为: wurenxiansheng.bokeyuan.com/info
2.动态参数路由:
from flask import url_for # 访问地址 : http://127.0.0.1:5000/info/1
@app.route("/info/<int:nid>", methods=["GET", "POST"], endpoint="r_info")
def student_info(nid):
print(url_for("r_info",nid=2)) # /info/2
return f"Hello Old boy {nid}" # Python3.6的新特性 f"{变量名}"
<int:nid>就是在url后定义一个参数接收
这种动态参数路由,在url_for的时候,一定要将动态参数名+参数值添加进去,否则会抛出参数错误的异常
3.Flask初始化配置
app = Flask(__name__)
app.template_folder = "templates" #指定模板存放路径
app.static_folder = "文件夹名字" #指定静态文件的存放路径
app.static_url_path = "/static" # 指定静态文件访问路径
static_host = None #静态文件的存放服务器
4.Flask对象配置
查看默认配置及配置项
app.config == app.default_config
我们可以把关于Flask的一些配置,单拎出来创建一个独立的类或者文件用来存放用的时候直接导入,但是要记住用app.config.from_object(Obj)引入配置文件
class FlaskSetting(object):
DEBUG = True #打开Flask的debug模式 app.config.from_object(FlaskSetting)
二、Flask中的蓝图
1.初始Flask蓝图(blueprint)
把Blueprint理解为不能被run的Flask对象
创建一个项目然后将目录结构做成如下(这是一个简单的对于数据的增删改查):
static:存放静态文件
templates:存放html文件
views:存放视图文件也就是咱们的蓝图(blueprint)
mysetting.py:关于Flask的一些配置
我们只看一个查看的功能走一下流程
views中的select.py文件中的内容:
from flask import Blueprint,render_template student = [
{"name":"小霞","age":"","gender":"女"},
{"name":"小红","age":"","gender":"女"},
{"name":"小明","age":"","gender":"男"},
{"name":"小亮","age":"","gender":"男"},
{"name":"小兰","age":"","gender":"女"},
] list_student = Blueprint("list_student",__name__)
@list_student.route("/user_list",methods=["GET","POST"])
def user_list():
return render_template("userlist.html",student_list=student)
userlist.html文件中的内容:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title></title> <!-- Bootstrap -->
</head>
<body>
<a href="">添加学生信息</a>
<table border="1px">
<thead>
<tr>
<th>名字</th>
<th>性别</th>
<th>年龄</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for student in student_list %}
<tr>
<td>{{ student.name }}</td>
<td>{{ student.gender }}</td>
<td>{{ student.age }}</td>
<td>
<a href="">删除</a>
<a href="">编辑</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</body>
</html>
manager.py文件中的内容:
from app01 import create_app
app = create_app()
if __name__ == '__main__': app.run(debug=True)
app01中的__init__.py中的内容:
from flask import Flask
from app01.views import select def create_app():
app = Flask(__name__)
app.register_blueprint(select.list_student)
return app
蓝图内部的视图函数及route不要出现重复
Flask中路由系统以及蓝图的使用的更多相关文章
- Flask最强攻略 - 跟DragonFire学Flask - 第七篇 Flask 中路由系统
Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...
- 第七篇 Flask 中路由系统以及参数
Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...
- 第七篇 Flask 中路由系统
1. @app.route() 装饰器中的参数 如果不明白装饰器 点击这里 methods : 当前 url 地址,允许访问的请求方式 @app.route("/info", me ...
- 7,Flask 中路由系统
Flask中的路由系统 @app.route("/",methods=["GET","POST"]) 为什么要这么用?其中的工作原理我们知道 ...
- flask中路由系统
flask中的路由我们并不陌生,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST"]) 1 ...
- Flask中路由系统、Flask的参数及app的配置
@app.route('/', methods=['GET', 'POST']) 1. @app.route()装饰器中的参数 methods:当前URL地址,允许访问的请求方式 @app.route ...
- Flask 中路由系统
1. @app.route() 装饰器中的参数 methods : 当前 url 地址,允许访问的请求方式 @app.route("/info", methods=["G ...
- Flask 的路由系统 FBV 与 CBV
Flask的路由系统 本质: 带参数的装饰器 传递函数后 执行 add_url_rule 方法 将 函数 和 url 封装到一个 Rule对象 将Rule对象 添加到 app.url_map(Map对 ...
- Flask中路由参数
Flask中路由参数.请求方式设置 一.参数设置 1.参数类型 Flask中参数的使用 @app.route('/parames/<username>/') def hello_world ...
随机推荐
- 第十届国际用户体验创新大赛携Mockplus走进校园
今日立夏,万木并秀,生生不息,第十届国际用户体验创新大赛即将拉开序幕.5月5日下午,一场用户体验设计经验分享活动携带众多嘉宾降临成都理工大学,为西南赛区首站赛事宣讲. 本次宣讲活动邀请了华为技术有限公 ...
- mysql的.sql文件头部 /*!32312 IF NOT EXISTS*/;
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RE ...
- pcd转obj
文件转换 从PCD文件写入和读取点云数据:https://www.cnblogs.com/li-yao7758258/p/6435568.html 点云数据格式PCD(Point Cloud Data ...
- Kinect-for-Windows-SDK开发
微软的黑科技,应用在游戏或者科研领域.可以类似于双摄像头三维成像.
- Babel 是干什么的
首先babel是干什么的?Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行. babel就是为了支持原有的旧的环境. 一.配置文件.babelrc Babel的配置 ...
- Tweak和app交互方案【进程通信】
Core Foundation DEMO:Tweak端: CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCent ...
- 咏南树形下拉列表数据敏感控件--TYNdbTreeList
咏南树形下拉列表数据敏感控件--TYNdbTreeList 软件系统拥有自己通用的下拉列表控件可以大大地加速系统的开发和易用性. 控件支持DELPHI5及以上版本安装并使用. 控件的用法: proce ...
- 个人项目-数组求和(语言:C++)
prog1详细要求: [第一版本程序Prog1要求:] + 给定一个数组,实现数组元素求和:,具体要求:实现对一维数组(a[100])的所有元素相加运算. + 数据准备:a)数组长度:100:b)数组 ...
- redis分布式集群3种架构方案
集群方案: 1. 主从高可用(该方案就是单实例形式,只是为了保证数据的安全,对于用户数据少,业务的前期可以采用,目前我司缓存架构就是采用该方案) 2. 客户端分片(典型代表:Jedis.自主写分片算法 ...
- postgresql 修改配置生效方法
对于配置服务器,,太多时候我们在Linux中做的操作是,配置*.conf文件,然后重启服务.而很多服务都具有reload功能,而但是具体到某个配置,有时候直接说出需不需要重启服务而使得配置生效,这并不 ...