您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Flask中寻找url_for的逆函数

在Flask中寻找url_for的逆函数

我使用以下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。

免责声明:我尚未对其进行广泛的测试。我原本打算最终将它作为请求请求提交,但似乎从来没有经过全面测试并编写了一些单元测试。如果它不适合您,请告诉我!

解决方法

我正在使用FlaskFlask-RESTful构建REST
API。在此API中,我的一些资源包含与其他资源的url关系。

对这些资源执行POST请求时,我发现我需要Flask的url_for()函数的逆函数来解析传入的url。

例如,POSThttps://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"
  },}

我想解析IDownertenant使用以下路由:

"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。

免责声明:我尚未对其进行广泛的测试。我原本打算最终将它作为请求请求提交,但似乎从来没有经过全面测试并编写了一些单元测试。如果它不适合您,请告诉我!

我正在使用FlaskFlask-RESTful构建REST
API。在此API中,我的一些资源包含与其他资源的url关系。

对这些资源执行POST请求时,我发现我需要Flask的url_for()函数的逆函数来解析传入的url。

例如,POSThttps://www.example.com/buildings可能包含以下json:

我想解析IDownertenant使用以下路由:

在Flask或Werkzueg中是否可以方便地进行此操作,还是我应该自己解析网址?能够重新使用已经定义的路由会很好…

我通过查看url_for并将其反转的实现来编写此代码

url参数可以是一个完整的URL或只是路径信息部分。返回值是带有端点名称元组dict带有参数的a。

免责声明:我尚未对其进行广泛的测试。我原本打算最终将它作为请求请求提交,但似乎从来没有经过全面测试并编写了一些单元测试。如果它不适合您,请告诉我!

Python 2022/1/1 18:44:01 有613人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶