片段没有出现在网页上

时间:2017-05-14 17:41:31

标签: django django-models django-queryset wagtail wagtail-snippet

我正在尝试根据Wagtail教程here构建一个片段。

我已在models.py中构建了我的代码段并在templatetags文件夹中创建了自定义模板代码,并通过Page将代码段连接到ForeignKey。我还创建了html模板并同时运行makemigrationsmigrate

代码段是标题图片和标题,显示在除主页之外的所有页面上。代码如下:

Snippet Model:

@register_snippet
class HeroImage(models.Model):
    text = models.CharField(max_length=255)
    image = models.ForeignKey(
        'wagtailimages.Image',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name='+'
    )

    panels = [
        FieldPanel('text'),
        ImageChooserPanel('image'),
    ]

    def __str__(self):
        return self.text

代码段自定义模板代码:

@register.inclusion_tag('hero_image.html', takes_context=True)
def hero_images(context):
    self = context.get('self')
    if self is None or self.depth <= 2:
        hero = ()
    else:
        hero = HeroImage.objects.all()
    return {
        'hero': hero,
        'request': context['request'],
    }

连接到Page:

的代码段
class MenuPage(Page):
    hero = models.ForeignKey(
        'home.HeroImage',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name='+'
    )

    content_panels = Page.content_panels + [
        SnippetChooserPanel('hero'),
    ]

我创建了两个代码段,并在管理界面中的我的页面中选择了一个代码段。在模板中,我尝试了很多不同的Snippet调用,但它们都没有返回任何内容。我试过的电话包括:

{{ page.hero }}
{{ page.hero.text }}
{{ hero.text }}
{{ page.hero_images }}
{{ page.hero_images.text }}
Etc...

遗憾的是,没有任何工作可行,我设法完成的唯一工作就是输入{{ hero }}返回<QuerySet [<HeroImage: Lorem Ipsum One>, <HeroImage: Lorem Ipsum Two>]>

我做错了什么?

2 个答案:

答案 0 :(得分:0)

解决了这个问题。如果有人遇到类似的事情:

我在单独的模板上有模板标签,该模板已加载到base.html中。包含代码段标记的模板需要与.demo p:first-child::first-line { color: red; } .demo p:only-child, .demo p:only-child::first-line { color: inherit; } 模板相同

答案 1 :(得分:0)

在 Visual Studio 代码中,关闭 VSC 然后再打开