尝试加载“menus.templatetags.menus\u标记”时引发ImportError:无法从“menus.models”导入名称“menus”

2024-09-28 16:46:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是歪着尾巴,现在有点困惑。我有一个文件夹结构:

网站>;菜单>;模板标签>;菜单\u tags.py

代码如下:

    from django import template

    from ..models import Menu

    register = template.Library()

    @register.simple_tag()
    def get_menu(slug):
        return Menu.objects.get(slug=slug)

然后在“我的模型”(站点>;菜单>;models.py)中:

    """Menus models"""

    from django.db import models

    from django_extensions.db.fields import AutoSlugField
    from modelcluster.fields import ParentalKey
    from modelcluster.models import ClusterableModel

    from wagtail.admin.edit_handlers import (
        MultiFieldPanel,
        InlinePanel,
        FieldPanel, 
        PageChooserPanel
    )
    from wagtail.core.models import Orderable
    from wagtail.snippets.models import register_snippet

    class MenuItem(Orderable):
        
        link_title = models.CharField(
            blank=True,
            null=True,
            max_length=50
        )
        link_url = models.CharField(
            max_length=500,
            blank=True
        )
        link_page = models.ForeignKey(
            "wagtailcore.Page",
            null=True,
            blank=True,
            related_name="+",
            on_delete=models.CASCADE,
        )
        open_in_new_tab = models.BooleanField(default=False, blank=True)

        page = ParentalKey("Menu", related_name="menu_items")

        panels = [
            FieldPanel("link_title"),
            FieldPanel("link_url"),
            PageChooserPanel("link_page"),
            FieldPanel("open_in_new_tab")

        ]

        # @todo add properties
        # link

        @register_snippet
        class Menu(ClusterableModel):
            """The main menu clusterable model."""

            title = models.CharField(max_length=100)
            slug = AutoSlugField(populate_from="title", editable=True)

            panels = [
                MultiFieldPanel([
                    FieldPanel("title"),
                    FieldPanel("slug"),
                ], heading="Menu"),
                InlinePanel("menu_items", label="Menu Item")
            ]

            def __str__(self):
                return self.title

现在当我编译时,我得到了上面的导入错误。我确信路径是正确的,但我不知道为什么它可以从模型中导入菜单。任何帮助都将不胜感激

非常感谢


Tags: djangofromimportgtregistertruetitlemodels