gpt4 book ai didi

python - 在 Pyramid 中,使用遍历,如何创建动态 url?

转载 作者:太空狗 更新时间:2023-10-30 02:34:45 25 4
gpt4 key购买 nike

我是 Pyramid 的新手并且已经创建了一个应用程序。我有一个包含类别表的数据库。一个类别可能是具有属性 Red 和 Green 的颜色,另一个类别可能是具有属性 4 和 5 的大小。我希望能够创建如下链接:domain.com/{category}。假设我有两个类别模板。一种是 color.mak,一种是 size.mak。我如何获得它,以便 domain.com/Red 或 domain.com/Green 呈现 color.mak 而 domain.com/4 或 domain.com/5 呈现 size.mak?在阅读了 URL Dispatch 和 Traversal 之间的区别之后,似乎 Traversal 更适合我想要的,尽管它可以通过任何一种方式完成。我真正坚持的是如何将这些类别添加到我的资源树中。

最佳答案

首先,您需要根资源从 __getitem__ 返回不同的资源类型:

class Root(object):
def __getitem__(self, key):
if key in ['Red', 'Green']:
return ColorCategory(key)
elif key in ['4', '5']:
return SizeCategory(key)

class ColorCategory(object):
...

class SizeCategory(object):
...

然后在您的 __init__.py 中,您需要为不同的资源类型(也称为上下文类型)配置不同的 View :

    config.add_view('myapp.views.color',
context='myapp:resources.ColorCategory', name='',
renderer='myapp:templates/color.mak')

config.add_view('myapp.views.size',
context='myapp:resources.SizeCategory', name='',
renderer='myapp:templates/size.mak')

它的工作方式是,当您获得某个 URL 时,Traversal 将查找某个上下文和 View 名称。对于 domain.com/Red,上下文将为 ColorCategory('Red')(因为这是您的 Root 资源返回的内容)并且 View 名称将为 ''(因为在查找该上下文后,该路径被完全消耗掉了)。然后 Pyramid 将使用上下文类型和 View 名称作为过滤器来查找配置的 View 和模板。

关于python - 在 Pyramid 中,使用遍历,如何创建动态 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499735/

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