我正在尝试根据Wagtail教程here构建一个片段。
我已在models.py
中构建了我的代码段并在templatetags
文件夹中创建了自定义模板代码,并通过Page
将代码段连接到ForeignKey
。我还创建了html模板并同时运行makemigrations
和migrate
。
代码段是标题图片和标题,显示在除主页之外的所有页面上。代码如下:
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>]>
我做错了什么?
答案 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 然后再打开