gpt4 book ai didi

python - web2py 下拉菜单从具有主要和子类别的数据库生成

转载 作者:行者123 更新时间:2023-11-28 19:22:41 25 4
gpt4 key购买 nike

我一直在尝试从我的数据库中创建一个下拉菜单,其中包含主要类别和子类别。例如,动物将是主要的,狗和猫是次要的。我还有一个我首先设置的菜单的主标题。基本上我无法获得正确的代码以正确地继续格式化。

我的 db.py:

db.define_table('store_categories',
Field('maincategory', 'string'),
Field('subcategory', 'string'),
Field('description', 'text'))

菜单.py:

response.menu = [(T('Catalog'), False, '')]
maininfo=db(db.store_categories.subcategory=='').select(db.store_categories.maincategory)
for maincat in maininfo:
response.menu.append([maincat.maincategory,False,'link'],)
for subcat in db(db.store_categories.subcategory!='').select(db.store_categories.subcategory):
response.menu[-1].append([(T(subcat.subcategory)),False,'link'])

我的数据库是这样填充的:(我删除了其他字段上的 store_categories 以使其适合)

store_categories.id; .maincategory; .subcategory;   .description
1 Animals Animals Main
2 Animals Dogs
4 Animals Cats

当它在切片没有“-1”的情况下进行迭代时,它显示一个菜单但是一个简单的静态菜单,所有 4 个条目都直接穿过(没有下拉菜单)但是我想要一个下拉菜单,我用这个静态生成的:

    response.menu2 = [(T('Catalog'), False, '', [
(T('Animals'), False, '/beta/default/Animals', [
(T('Dogs'), False, '/beta/default/Dogs'),
(T('Cats'), False, '/beta/default/Cats'),
])
]
)]

在 shell 中看起来像这样:

[(<lazyT 'Catalog'>,
False,
'',
[(<lazyT 'Animals'>,
False,
'/beta/default/Animals',
[(<lazyT 'Dogs'>, False, '/beta/default/Dogs'),
(<lazyT 'Cats'>, False, '/beta/default/Cats')])])]

不幸的是,无论我尝试何种变体,我都无法在我的代码中重现这一点,而且几乎所有的变体都会在 web2py 的票证中产生“解压需要超过 1 个值”类型的错误。

本质上,我的代码在 shell 中产生了这个:

[(<lazyT 'Catalog'>, False, ''),
['Animals',
False,
'link',
[<lazyT 'Dogs'>, False, 'link'],
[<lazyT 'Cats'>, False, 'link']]]

我可以看到一些差异,但是我无法重现相同的结构。在查看了关于菜单的 web2py 章节后,我试图修改我的代码,但我遵循的格式(据我所知)仍然出错。此外,我尝试手动重新创建格式并最终使用已经存在的 menu.py 内容作为要遵循的格式,因为即使从书中复制/粘贴格式示例也会失败。我还查看了这些文章以寻求帮助(不幸的是,其中大部分都没有定论,但我想我会先尝试搜索,然后再询问任何地方):

http://article.gmane.org/gmane.comp.python.web2py/121092/match=generate+menu

hXXp://www.web2pyslices.com/slice/show/1330/dynamic-menu

hXXps://groups.google.com/forum/#!searchin/web2py/menu$20generate|sort:date|spell:false/web2py/fbegfZ9VGys/O5jtwjXNYdMJ

感谢所有帮助,非常感谢。

最佳答案

奇怪的是没有人可以回答甚至没有建议,但我相信你们中的许多人都有类似风格的菜单。无论如何,web2py 的创建者帮助了我,他提供的解决方案是这样的:

def menu_rec(items):
return [(x.title,None,URL('shop', 'category',
args=pretty_url(x.id, x.slug)), menu_rec(x.children)) for x in items or []]

效果很好。

关于python - web2py 下拉菜单从具有主要和子类别的数据库生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21261222/

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