gpt4 book ai didi

python - 这是一种检查当前 request.path 的所有子路径是否都有关联的可调用 View 的方法吗?

转载 作者:太空宇宙 更新时间:2023-11-03 19:06:45 25 4
gpt4 key购买 nike

我正在开发面包屑生成器。它使用 request.path,然后为每个子路径构建一个面包屑。

示例:

/blog/articles/view/12345

然后对于每个子路径:

/blog/articles/view
/blog/articles
/blog

如果此 URL 后面有可调用的 View (允许不带参数的 GET 方法),则返回 True,否则返回 False

这样我就可以使面包屑中的子路径可点击,以显示那里提供了一些东西。

有什么想法不会调用任何子路径并生成无用的代码执行吗?

最佳答案

不行,你必须测试所有路径前缀;路由允许存在许多任意的 URL。此外,通过混合使用路径谓词,多个路由可以匹配相同的 URL,并且在它们之间进行选择取决于请求中的其他信息。

要准备面包屑,请循环遍历子路径一次并确定每个子路径是否有匹配的 View ;最简单的方法是重用 pviews 命令底层的代码;此代码需要当前请求:

from pyramid.scripts.pviews import PViewsCommand

pvcomm = PViewsCommand()

urlpath = request.environ['PATH_INFO']
parts = urlpath.split('/')
existing_views = {}

for i in range(1, len(parts)):
path = '/'.join(parts[:i])
view = pvcomm._find_view(path, request.registry)
if view is not None:
existing_views[path] = view

您现在可以在 existing_views 字典中查找路径前缀。

关于python - 这是一种检查当前 request.path 的所有子路径是否都有关联的可调用 View 的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14541563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com