我有一个复杂的基于Flask的Web应用程序。有许多具有视图功能的单独文件。它们的URL由@app.route('/...')
装饰器定义。有没有办法获取我的应用中已声明的所有路线的列表?也许有一些我可以调用该app
对象的方法?
应用程序的所有路由都存储在app.url_map
的实例上werkzeug.routing.Map
。你可以Rule
使用以下iter_rules
方法遍历实例:
from flask import Flask, url_for
app = Flask(__name__)
def has_no_empty_params(rule):
defaults = rule.defaults if rule.defaults is not None else ()
arguments = rule.arguments if rule.arguments is not None else ()
return len(defaults) >= len(arguments)
@app.route("/site-map")
def site_map():
links = []
for rule in app.url_map.iter_rules():
# Filter out rules we can't navigate to in a browser
# and rules that require parameters
if "GET" in rule.methods and has_no_empty_params(rule):
url = url_for(rule.endpoint, **(rule.defaults or {}))
links.append((url, rule.endpoint))
# links is now a list of url, endpoint tuples
问题内容: 我一直在尝试了解如何生成动态Flask URL。我已经阅读了文档和一些示例,但无法弄清楚为什么此代码不起作用: 我希望将index.html模板提供给,但事实并非如此。我收到一个构建错误。我想念什么? 如果我使用固定路径(如),则一切正常。 问题答案: 你已经拥有了很多东西。你需要做的就是使用语法(或适当的语法)修饰视图函数。 当Flask像你尝试使用的那样从动态路由的URL中提取变量
问题内容: 我有许多以唯一ID 开头和结尾的URL 。我需要能够从URL获取ID,以便可以将一些数据从另一个系统传递到我的Flask应用程序。我如何获得该价值? 问题答案: 你需要一个可变的URL,该URL是通过在URL中添加占位符并在view函数中接受相应的参数来创建的。 通常,URL的各个部分用分隔。 使用url_for生成的URL的网页。 你也可以将值作为查询字符串的一部分传递,并从请求中获
问题内容: 在Flask中,当我为同一功能使用多个路由时,如何知道当前使用的是哪个路由? 例如: 我怎么知道,现在我被称为使用或? 更新 我知道我不想使用它,因为请求可能相当复杂,并且我想在函数中重复路由逻辑。我认为最好的解决方案。 问题答案: 检查触发你的视图的路线的最“轻松”方法是request.url_rule。
问题内容: 我正在开发Flask扩展名,我想从该扩展名在文件系统上项目的根路径中创建目录。 假设我们有这个目录结构 my_folder应该由扩展名动态创建,扩展名是一个测试实用程序,并将被测试的应用程序包装在/ tests目录中。但是,我正在努力确定扩展中项目的根路径。 现在,我试图从运行文件中猜测路径: 一旦在IDE中而不是manage.py中运行测试,这显然会中断。我可以简单地推断出相对于ap
我有一个使用Node.js和Express构建的web应用程序。现在我想列出所有注册的路线及其适当的方法。 例如,如果我执行了 我想检索一个对象(或与之相当的东西),例如: 这可能吗?如果可能,如何实现? 更新:同时,我创建了一个名为get-routes的npm包,它从给定的应用程序中提取路由,解决了这个问题。目前,只支持Express4.x,但我想现在这是可以的。只是通知一下。
问题内容: 获取Oracle中所有表的列表? 问题答案: 假设您有权访问DBA_TABLES数据字典视图。如果您没有这些特权但需要它们,则可以请求DBA显式授予您对该表的特权,或者请求DBA授予您该SELECT ANY DICTIONARY特权或SELECT_CATALOG_ROLE角色(这两者都将允许您查询任何数据字典表) )。当然,您可能希望排除某些模式,例如SYS和模式,SYSTEM而这些模