我使用以下route_from
功能:
from flask.globals import _app_ctx_stack, _request_ctx_stack from werkzeug.urls import url_parse def route_from(url, method = None): appctx = _app_ctx_stack.top reqctx = _request_ctx_stack.top if appctx is None: raise RuntimeError('Attempted to match a URL without the ' 'application context being pushed. This has to be ' 'executed when application context is available.') if reqctx is not None: url_adapter = reqctx.url_adapter else: url_adapter = appctx.url_adapter if url_adapter is None: raise RuntimeError('Application was not able to create a URL ' 'adapter for request independent URL matching. ' 'You might be able to fix this by setting ' 'the SERVER_NAME config variable.') parsed_url = url_parse(url) if parsed_url.netloc is not "" and parsed_url.netloc != url_adapter.server_name: raise NotFound() return url_adapter.match(parsed_url.path, method)
@H_419_7@我通过查看
url_for
并将其反转的实现来编写此代码。该
url
参数可以是一个完整的URL或只是路径信息部分。返回值是带有端点名称的元组和dict
带有参数的a。免责声明:我尚未对其进行广泛的测试。我原本打算最终将它作为请求请求提交,但似乎从来没有经过全面测试并编写了一些单元测试。如果它不适合您,请告诉我!
解决方法
我正在使用Flask和Flask-RESTful构建REST
API。在此API中,我的一些资源包含与其他资源的url关系。对这些资源执行POST请求时,我发现我需要Flask的url_for()函数的逆函数来解析传入的url。
例如,POST
https://www.example.com/buildings
可能包含以下json:{ "address": "123 Lyall St",... "owner": { "href": "https://www.example.com/users/21414512" },"tenant": { "href": "https://www.example.com/users/16324642" },}
我想解析ID
owner
并tenant
使用以下路由:"https://www.example.com/users/<int:id>"
在Flask或Werkzueg中是否可以方便地进行此操作,还是我应该自己解析网址?能够重新使用已经定义的路由会很好…
{
"address": "123 Lyall St",...
"owner": {
"href": "https://www.example.com/users/21414512"
},"tenant": {
"href": "https://www.example.com/users/16324642"
},}
"https://www.example.com/users/<int:id>"
我通过查看url_for
并将其反转的实现来编写此代码。
该url
参数可以是一个完整的URL或只是路径信息部分。返回值是带有端点名称的元组和dict
带有参数的a。
免责声明:我尚未对其进行广泛的测试。我原本打算最终将它作为请求请求提交,但似乎从来没有经过全面测试并编写了一些单元测试。如果它不适合您,请告诉我!
我正在使用Flask和Flask-RESTful构建REST
API。在此API中,我的一些资源包含与其他资源的url关系。
对这些资源执行POST请求时,我发现我需要Flask的url_for()函数的逆函数来解析传入的url。
例如,POSThttps://www.example.com/buildings
可能包含以下json:
我想解析IDowner
并tenant
使用以下路由:
在Flask或Werkzueg中是否可以方便地进行此操作,还是我应该自己解析网址?能够重新使用已经定义的路由会很好…
我通过查看url_for
并将其反转的实现来编写此代码。
该url
参数可以是一个完整的URL或只是路径信息部分。返回值是带有端点名称的元组和dict
带有参数的a。
免责声明:我尚未对其进行广泛的测试。我原本打算最终将它作为请求请求提交,但似乎从来没有经过全面测试并编写了一些单元测试。如果它不适合您,请告诉我!