- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 StructBlock
和 Page
模型:
class PostGrid(blocks.StructBlock):
title = blocks.CharBlock()
post_1 = blocks.PageChooserBlock()
post_2 = blocks.PageChooserBlock()
class Meta:
template = 'post-grid.html'
class BlogIndex(Page):
body = StreamField([('POSTS', PostGrid()),])
class Meta:
template = 'base.html'
class PostPage(Page):
hero_title = models.CharField(max_length=255)
我想在 body
StreamField 中渲染 post_1
和 post_2
的属性:
base.html
:
{% for block in page.body %}
{% include_block block %}
{% endfor %}
post-grid.html
:
{{ value.post_1.url }}
{{ value.post_1.hero_title }}
value.post_1.url
可以很好地呈现 URL。但是,value.post_1.hero_title
是空白的。
如何呈现页面属性?
最佳答案
当您使用 PageChooserBlock()
时没有指定更多选项,Wagtail 事先不知道检索页面时的页面类型,因此它返回一个基本的 Page
实例,它只包含所有页面类型通用的基本字段,例如title
。
在这种情况下,这些选择器可能只允许 PostPage 的页面,因此您可以在 PageChooserBlock 定义中指定:
class PostGrid(blocks.StructBlock):
title = blocks.CharBlock()
post_1 = blocks.PageChooserBlock(page_type='myapp.PostPage')
post_2 = blocks.PageChooserBlock(page_type='myapp.PostPage')
# replace 'myapp' with your app name
通过此更改,选择器将只允许选择 PostPage 类型的页面,并且在模板上,value.post_1
和 value.post_2
将作为完整的 PostPage 返回实例,允许您使用 hero_title
。
或者,如果您因为有多种允许的页面类型而无法进行此更改,您可以使用 .specific
强制它获取完整的页面对象:
{% with value.post_1.specific as post_1 %}
{{ post_1.url }}
{{ post_1.hero_title }}
{% endwith %}
但是,每次调用 specific
都会进行一次额外的数据库查询。
关于python - 在 StreamField 中显示时,如何在模型中渲染页面属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71081090/
我有一个抽象类,其中包含 ha StreamField。我还有一个继承自 BasePage 的类 CustomPage。我希望 CustomPage 向内容添加新的 StructBlock。我该怎么做
如何在页面模型上创建动态内容 block 。假设我想要一个代表谷歌地图的 block 。因此,我将此 StructBlock 聚合为缩放级别、lat 和 lng 以及呈现 block 的模板。 这个想
我有以下 StructBlock 和 Page 模型: class PostGrid(blocks.StructBlock): title = blocks.CharBlock() p
在我的博文模型中,我试图将 RichTextField 迁移到 StreamField。我遵循了 Wagtail 文档“将 RichTextFields 迁移到 StreamField”,包括关于迁移
我正在从旧站点进行迁移,我需要以编程方式将原始 html 添加到 StreamField在 Wagtail 页面上。我该怎么做? 最佳答案 最简单的方法是确保 RawHTMLBlock在您的 Stre
我定义了一些自定义 StreamField block 。我希望能够折叠自定义 block 中的某些属性的选项,就像我可以使用 content_panels 对标准页面模型所做的那样,但是我认为这不受
在下面的模型中,我想制作 bottom_content不需要整个字段。我怎样才能做到这一点? class ServicePage(Page): top_content = StreamField(
我已经按照 this 创建了自定义 MarkdownField 和 MarkdownPanel 类教程: from django.db.models import TextField from dja
我在从片段中获取值时遇到了一些问题,我已经使用片段选择器 block 将其包含在流场中。 生物片段: @register_snippet class BioSnippet(models.Model):
我正在尝试在我的 Wagtail 网站上构建一些结构化摘要。我浏览了 documentation , 但在这一点上什么也没看到(如果我错过了,请原谅我)。 是否可以在 Snippet 中使用 Stre
我在 StreamField 中有一个带有 ModelChooserBlock 的模型类,如果我打开我的 Django Rest Framework,我不会得到令人满意的结果。具体来说,“配料”应该有
我正在使用 Wagtail CMS for Django 构建一个网站。我目前正在使用 RichText streamfield block 向页面添加内容。内容编辑者可以使用所见即所得编辑器中的列表
默认情况下,wagtail 的 StreamField在 admin 中的空字段看起来像这样,显示了用户可用的不同块: 但是,我希望它默认包含我选择的块。例如: 我将如何做到这一点?设置 defaul
我想在 wagtail 中以编程方式创建 BlogPage,并设置其 StreamField 值。我可以设置 heading 字段。但当我尝试设置 paragraph 字段时,我收到 Attribut
我依靠模板继承系统将 extra_css 和/或 extra_js 插入我的页面: base.html: {% block extra_css %}
我知道您可以使用 django 表单媒体 API 和 js_initializer() 方法在 form 中包含 javascript,我已经成功地做到了。但是当我编写的这个自定义 block 的实例
我的公司正在使用 Wagtail 为我们的网站构建强大的页面,可能使用 StreamField 组件。我们想知道 Wagtail 是否允许我们创建可重用的部分(可能在片段中)并将它们注入(inject
我创建了 SolutionPage 并且在 It's content 字段中有嵌套的 short_portfolio block 。我通过 Wagtail 管理面板向 PageChooserBlock
现在我对这两个人有点恼火。我需要特别设计段落的第一个字母。使用 RichTextField 时,模板中的示例代码有效。在某种程度上,它设置了 RichTextField 的第一个字母的样式,而不是其中
我是一名优秀的程序员,十分优秀!