在 wagtail 中,Streamforms 不呈现表单的内容
In wagtail , Streamforms is not rendering the content of the form
我已经安装了最新版本的 wagtail Streamforms 包和 wagtail 2.0,但是当我使用它创建表单时,表单内容没有使用默认表单模板显示,当我定义自定义模板时 'streamforms/form_block.html' 仍然未显示的表单内容 up.I 定义了我在 base.py 设置文件中使用的模板,如文档中所述。
WAGTAILSTREAMFORMS_FORM_TEMPLATES = (
('streamforms/form_block.html', 'Default Form Template'),
)
但是在管理面板->Streamforms 中,当我创建表单时,在模板选择器字段中它只显示 "Default Form Template"
我已经在流场中的 models.py 中定义了它,并为自己定义了模板来显示它仍未呈现的内容
class 标准页(页):
class StandardPage(Page):
introduction = models.TextField(
help_text='Text to describe the page',
blank=True)
image = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
help_text='Landscape mode only; horizontal width between 1000px and 3000px.'
)
video_url = models.URLField(
null=True,
blank=True
)
body = StreamField([
(
'main_content',
blocks.ListBlock(BaseStreamBlock(), label='content')
),
(
'form',
blocks.ListBlock(WagtailFormBlock(), label='create form')
)
,],
blank=True,
null=True,
verbose_name="Standard Page"
)
content_panels = Page.content_panels + [
FieldPanel('introduction', classname="full"),
ImageChooserPanel('image'),
FieldPanel('video_url'),
StreamFieldPanel('body'),
]
@property
def standard_page(self):
return self.get_parent().specific
这是我的 "Standard_Page.html" 模板
{% extends "base.html" %}
{% load wagtailcore_tags wagtailtrans_tags streamforms_tags wagtailimages_tags homeapp_tags%}
{% block content%}
{% include "base/include/header.html" %}
<div class="container">
{{ page.introduction }}
{{ page.image }}
<div class="row">
<div class="col-md-7">
{% for block in page.body %}
{{ block}}
{% endfor %}
</div>
</div>
</div>
{% endblock %}
我做错了什么?
假设您上面的内容是您的实际设置:
WAGTAILSTREAMFORMS_FORM_TEMPLATES = (
('streamforms/form_block.html', 'Default Form Template'),
)
这仅用于填充表单中可用模板的下拉列表。您设置的就是设置中的默认值。如果您想覆盖包中的默认模板,您只需要确保位于您自己代码中路径 streamforms/form_block.html
上的模板位于 INSTALLED_APPS
中出现在 wagtailstreamforms 之前的应用程序中。 Django 将首先看到您的模板并进行渲染。
如果您想为默认模板提供额外的模板,只需进行设置:
WAGTAILSTREAMFORMS_FORM_TEMPLATES = (
('streamforms/form_block.html', 'Default Form Template'),
('example/forms/another_form_block.html', 'My Custom Template'),
)
然后创建一个模板 'example/forms/another_form_block.html',就像 http://wagtailstreamforms.readthedocs.io/en/latest/templates.html#templates 中的示例一样。然后,您将有两种选择要使用的模板。包装内的和您自己的。
希望对您有所帮助。
我已经安装了最新版本的 wagtail Streamforms 包和 wagtail 2.0,但是当我使用它创建表单时,表单内容没有使用默认表单模板显示,当我定义自定义模板时 'streamforms/form_block.html' 仍然未显示的表单内容 up.I 定义了我在 base.py 设置文件中使用的模板,如文档中所述。
WAGTAILSTREAMFORMS_FORM_TEMPLATES = ( ('streamforms/form_block.html', 'Default Form Template'), )
但是在管理面板->Streamforms 中,当我创建表单时,在模板选择器字段中它只显示 "Default Form Template"
我已经在流场中的 models.py 中定义了它,并为自己定义了模板来显示它仍未呈现的内容 class 标准页(页):
class StandardPage(Page):
introduction = models.TextField(
help_text='Text to describe the page',
blank=True)
image = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
help_text='Landscape mode only; horizontal width between 1000px and 3000px.'
)
video_url = models.URLField(
null=True,
blank=True
)
body = StreamField([
(
'main_content',
blocks.ListBlock(BaseStreamBlock(), label='content')
),
(
'form',
blocks.ListBlock(WagtailFormBlock(), label='create form')
)
,],
blank=True,
null=True,
verbose_name="Standard Page"
)
content_panels = Page.content_panels + [
FieldPanel('introduction', classname="full"),
ImageChooserPanel('image'),
FieldPanel('video_url'),
StreamFieldPanel('body'),
]
@property
def standard_page(self):
return self.get_parent().specific
这是我的 "Standard_Page.html" 模板
{% extends "base.html" %}
{% load wagtailcore_tags wagtailtrans_tags streamforms_tags wagtailimages_tags homeapp_tags%}
{% block content%}
{% include "base/include/header.html" %}
<div class="container">
{{ page.introduction }}
{{ page.image }}
<div class="row">
<div class="col-md-7">
{% for block in page.body %}
{{ block}}
{% endfor %}
</div>
</div>
</div>
{% endblock %}
我做错了什么?
假设您上面的内容是您的实际设置:
WAGTAILSTREAMFORMS_FORM_TEMPLATES = (
('streamforms/form_block.html', 'Default Form Template'),
)
这仅用于填充表单中可用模板的下拉列表。您设置的就是设置中的默认值。如果您想覆盖包中的默认模板,您只需要确保位于您自己代码中路径 streamforms/form_block.html
上的模板位于 INSTALLED_APPS
中出现在 wagtailstreamforms 之前的应用程序中。 Django 将首先看到您的模板并进行渲染。
如果您想为默认模板提供额外的模板,只需进行设置:
WAGTAILSTREAMFORMS_FORM_TEMPLATES = (
('streamforms/form_block.html', 'Default Form Template'),
('example/forms/another_form_block.html', 'My Custom Template'),
)
然后创建一个模板 'example/forms/another_form_block.html',就像 http://wagtailstreamforms.readthedocs.io/en/latest/templates.html#templates 中的示例一样。然后,您将有两种选择要使用的模板。包装内的和您自己的。
希望对您有所帮助。