gpt4 book ai didi

python - 使用Traversal时如何生成URL查看?

转载 作者:太空狗 更新时间:2023-10-30 02:05:06 24 4
gpt4 key购买 nike

当使用 URL Dispatch 时,我们可以很容易地生成一个 View 的 URL,因为每个 View 都有一个不同的 route_name,例如:

login.py:
@view_config(route_name='login')

index.pt:
<a href="${request.route_url('login')}">Login</a>

但是在遍历中如何做到这一点呢?由于没有可用的资源“登录”实例,我不知道如何生成 URL 来查看登录。

最佳答案

在遍历中,您需要了解树的结构,并且必须能够按需加载上下文对象。 URL 是根据上下文生成的,使用其位置感知属性 __name____parent__ 构建 URL。

/
|- login
|- users
|- 1
|- edit

假设我们有一个 User(id=1) 上下文对象,我们想要登录。如果您的 View 是通过 @view_config(context=Root, name='login') 注册的,那么您可以通过 request.resource_url(request.root, 'login')< 生成 url/。这是我们告诉 Pyramid 生成一个相对于树根的 URL。

另一方面,如果我们处于登录状态并且我们想要让用户进行编辑,您必须为该用户加载一个位置感知的 User 对象,以便生成 URL。 request.resource_url(user, 'edit') 其中 user 是具有有效 __name__< 的 User(id=1) 实例__parent__ 属性。

如果你传入一个没有位置感知的上下文 __parent__ URL 将被生成,就好像你的用户被安装在 / 因为这是 Pyramid 唯一合理的地方认为该对象会在您的树中。

加载位置感知对象的能力是我们强调遍历最适合对象的持久树的原因,而不是动态生成的对象。如果您想为其生成 URL,直接加载用户并为其填充 __parent____name__ 会更加方便。

关于python - 使用Traversal时如何生成URL查看?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15090863/

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