Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用url_map.iter_rules与蓝图对象代替app

如何使用url_map.iter_rules与蓝图对象代替app
EN

Stack Overflow用户
提问于 2016-04-11 21:11:05
回答 2查看 3K关注 0票数 2

我有一个蓝图对象"api“和一个apis.py文件,其中有许多用api.route注释定义的api。例:

代码语言:javascript
运行
AI代码解释
复制
@api.route('/', methods=['GET'])
def get_info():

我想迭代并获得所有app的摘要,这些app与我们在app对象上使用"url_map.iter_rules“时得到的app相同。我们如何使用api蓝图对象来完成这个任务?我已经在我的init.py文件中注册了蓝图

代码语言:javascript
运行
AI代码解释
复制
from .api_1 import api as api_blueprint
app.register_blueprint(api_blueprint)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-11 22:08:45

我认为,如果您在注册蓝图之后调用app.url_map.iter_rules(),您也会得到子域的所有端点。

api.py

代码语言:javascript
运行
AI代码解释
复制
from flask import Blueprint
api = Blueprint('api', __name__)
@api.route('/')
def call_api():
        return ""

init.py:

代码语言:javascript
运行
AI代码解释
复制
from flask import Flask, Blueprint
from api import api

public = Blueprint('public', __name__)
@public.route('/')
def home():
        return render_template('public/home.html')


app = Flask(__name__)
app.register_blueprint(public)
app.register_blueprint(api, subdomain='api')
print(list(app.url_map.iter_rules()))

[<Rule 'api|/' (GET, HEAD, OPTIONS) -> api.call_api>,
 <Rule '/' (GET, HEAD, OPTIONS) -> public.home>,
 <Rule '/static/<filename>' (GET, HEAD, OPTIONS) -> static>]
票数 3
EN

Stack Overflow用户

发布于 2021-06-13 10:46:46

如果您发现它有用,我创建了一个函数,根据主应用程序中注册的蓝图显示(仅用于测试)每个url。这是我找到的唯一能够打印端点的解决方案,通过它们所属的蓝图将它们分开。当然,您可以创建一个函数,通过传递字符串格式的名称或蓝图本身,只打印其中一个蓝图的url_map。以下是一些例子:

代码语言:javascript
运行
AI代码解释
复制
from flask.logging import create_logger
def log_routes(app: Flask):

    log = create_logger(app)

    with app.app_context():
        """
        Maps every single endpoint for blueprint registered in the main application.
        Also shows methos available for each endpoint
        """

        log.info('MAP ROUTER')
        bps = app.blueprints
        for bp in bps:
            print('', end='\n')
            log.info(f'BLUEPRINT RULES: "{bp}"')
            for ep in app.url_map.iter_rules():
                bp_name = ep.endpoint.split('.')[0]
                if bp_name == bp:
                    log.debug(f'Endpoint: {ep} methods={ep.methods}')

下面是一个函数的示例,该函数只接受需要从中获取其url_map的蓝图的名称:

代码语言:javascript
运行
AI代码解释
复制
def log_blueprint_urls(app: Flask, bp_name: str):

    log = create_logger(app)

    with app.app_context():
        """
        Maps every single endpoint for an specific blueprint in the main application.
        Also shows methos available for each endpoint
        """
        bps = app.blueprints
        if bp_name in bps:
            log.info(f'MAP ROUTER FOR BLUEPRINT "{bp_name}"')

            for ep in app.url_map.iter_rules():
                bp_name = ep.endpoint.split('.')[0]
                if bp_name == bp_name:
                    log.debug(f'Endpoint: {ep} methods={ep.methods}')
        else:
            log.critical(
                f'BLUEPRINT "{bp_name}" has not registered in main application')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36564080

复制
相关文章
何时使用 Map 来代替普通的 JS 对象
JS 普通对象 {key: 'value'} 用于存放结构化数据。但有一件事我觉得很烦:对象键必须是字符串(或很少使用的 symbol)。
前端小智@大迁世界
2020/05/12
2.2K0
何时使用 Map 来代替普通的 JS 对象
用map代替纯JavaScript对象[每日前端夜话0xCF]
JavaScript 普通对象 {key: 'value'} 可用于保存结构化数据。
疯狂的技术宅
2019/10/14
1.2K0
用map代替纯JavaScript对象[每日前端夜话0xCF]
Flask 学习-16.项目设计与蓝图的使用
前言 一个最简单的 Flask 应用可以是单个app.py文件, 当项目越来越大的时候,把所有代码放在单个文件中就很难维护了。 我们需要设计一个项目结构,每个目录做对应的事情。 项目结构设计 一个最简单的 Flask 应用可以是单个app.py文件。 app.py from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' if __name__ == '_
上海-悠悠
2022/08/31
7320
Flask 学习-16.项目设计与蓝图的使用
Flask-蓝图、模型与CodeFirs
db.create_all(app=app),这样就可以了,在数据库中就可以看到表了
py3study
2020/01/19
5910
Flask-蓝图、模型与CodeFirs
Flask框架的蓝图与视图
您好,我是码农飞哥,感谢您阅读本文!接上一篇文章,上篇文章我们介绍了Flask框架与SQLAlchemy框架的整合一分钟快速实现Flask框架与SQLAlchemy框架的整合,这篇文章我们将介绍Flask框架的蓝图和视图。
码农飞哥
2021/08/18
5650
Flask(9)- 蓝图的基本使用
程序中包含 4 个视图函数,根据页面路径,Flask 将请求转发给对应的视图函数,从浏览器发送过来的请求的处理过程如下图所示
小菠萝测试笔记
2021/07/16
9050
Flask(9)- 蓝图的基本使用
如何使用 try-with-resources 代替try-catch-finally?
try-with-resources 是 Java 7 引入的一种语法结构,用于自动关闭实现了 AutoCloseable 接口的资源。它可以代替传统的 try-catch-finally 结构来处理资源的释放。
程序员朱永胜
2023/10/10
2.2K0
使用 React Hooks 代替 Redux
React Hooks 面世也有很大一段时间了。我相信很多人对于 Hooks 的认知还大概处在:
Nealyang
2019/11/27
1.6K0
使用LocalDateTime来代替Date
在我们使用Date的时候,会发现很多无法理解的返回值,而且有很多方法是已经被弃用了的
挨踢小子部落阁
2020/01/02
1.6K0
使用scp代替wget传输文件
有时候,主机做了限制,wget无法获取文件,这时候在ssh下使用scp传输文件,就方便了很多。
用户8851537
2021/07/23
7720
使用 eglot 代替 lsp-mode
LSP 是当前使用最广泛的一套协议,用于给文本编辑器提供类似 IDE 的功能,比如:自动补全、定义跳转等。对于 Emacs 来说,主要有两个实现:
飞驰的西瓜
2022/07/26
7960
使用 eglot 代替 lsp-mode
WebRTC使用SDES代替DTLS协商
WebRTC作为浏览器中的一个组件,在设计的时候考虑了大量了安全问题,比如要求getUserMedia在加密网页中才能打开摄像头, 使用MDNS来防止IP地址的泄露, 使用DTLS来加密datachannel数据,使用DTLS-SRTP来加密音视频数据等等,在带来更高的安全性的同时也带来更多的复杂性,更多的资源占用。尤其是对于开发者来说,DTLS-SRTP的引入带来很多问题,工程的复杂性,服务器资源的占用,以及音视频建立连接的延迟等,我们使用SDES来减少DTLS带来的影响,在保证兼容WebRTC协议的同时减少系统的复杂度,降低弱网下的首帧延迟。
刘连响
2022/03/30
1.7K0
WebRTC使用SDES代替DTLS协商
在 Vue 对象模块内如何使用 this 对象?
众所周知,js 中的 this 对象在不同作用域下指代不同的对象实例,并且在以下 4 种场景中经常会“不知所向”:
LIYI
2019/09/02
2.8K0
java使用策略模式代替if/else
平时在开发中避免不了使用大量的if else语句,但过多层的if else对于性能有很大的开销,类似如下代码
HUC思梦
2020/09/03
1.3K0
使用 vmalert 代替 Prometheus 监控报警
前面我们已经介绍了可以使用 vmagent 代替 prometheus 抓取监控指标数据,要想完全替换 prometheus 还有一个非常重要的部分就是报警模块,之前我们都是在 prometheus 中定义报警规则评估后发送给 alertmanager 的,同样对应到 vm 中也有一个专门来处理报警的模块:vmalert。
我是阳明
2022/05/22
2.9K0
使用 vmalert 代替 Prometheus 监控报警
如何同步手机壳与APP颜色?
通常来说,大概没有人每天换手机壳,所以不妨在 APP 中提供一个配置选项,让用户去配置手机壳的颜色,然后 APP 就可以配置对应的主题色了。
Fundebug
2019/12/30
1.1K0
如何同步手机壳与APP颜色?
使用Pipfile代替reqirements.txt
很多语言都提供了环境隔离的支持,例如nodejs的node_module,golang的go mod,python也有virtualenv和pyvenv等机制。为了建立依赖快照,通常会用 pip freeze > requirements.txt 命令生成一个requirements.txt文件,在一些场景下这种方式就可以满足需求,但是在复杂场景下requirements.txt就力不从心了。
simpleapples
2020/04/07
9770
2019年,多云景观的蓝图与困境
云计算市场占有率正在疯狂增长,并且即将被各大规模的企业所采用。然而,尽管从AWS、Azure到谷歌、阿里巴巴、Dropbox等服务仍在不断的增加,却依旧没有一片云来管理它们。451 Research的研究表示,企业机构不断的将他们的IT资产引入云提供商提供的大杂烩中,为IaaS和本地私有云市场的参与者提出了挑战和潜在的利润空间。该公司的调查结果还表明,云已经成为了主流,90%的企业都在以某种形式或方法利用云服务。此外,由于不断增长的采用率,预计到2019年,60%的工作量都将在某种形式的托管云环境下进行
静一
2018/03/28
6120
2019年,多云景观的蓝图与困境
点击加载更多

相似问题

app.py: AttributeError:“蓝图”对象没有属性“wsgi_app”

112

如何使用PyMongo与烧瓶蓝图?

21

如何使用flask_mysqldb与蓝图

28

烧瓶,蓝图,current_app

14

Laravel -使用$app代替正面

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档