Django Wagtail在admin上自定义结构块模板
我已经阅读了文档中的“structblock的自定义编辑界面”部分。然后我写了:Django Wagtail在admin上自定义结构块模板,django,wagtail,Django,Wagtail,我已经阅读了文档中的“structblock的自定义编辑界面”部分。然后我写了: settings = StructBlock([ ('width', blocks.CharBlock(required=False, max_length=20 ) ), ('background_color', blocks.CharBlock(max_length=10, required=False)) ], form_template =
settings = StructBlock([
('width', blocks.CharBlock(required=False, max_length=20 ) ),
('background_color', blocks.CharBlock(max_length=10, required=False))
], form_template = 'personal_web/admin_blocks/section_settings.html' )
我已经将wagtail/admin/templates/wagtailadmin/block_forms/struct.html中的代码复制到我的自定义结构模板中,以便更好地进行自定义
---my section_settings.html---
{%if help_text%}
{{help_text}}
{%endif%}
{children.values%}
{%if child.block.label%}
{{child.block.label}:
{%endif%}
{{child.render_form}
{%endfor%}
在管理员界面上出现错误:
“内置函数”或“方法”对象不可编辑。。。在template/Users/burakk/BurakWorks/Web/VIRTUAL_ENVIRONMENTS/python3.6.1_dj_11/lib/python3.6/site-packages/wagtail/wagtailadmin/templates/wagtailadmin/block_forms/sequence_member.html中,第23行出现错误
顺便说一下,我使用jinja作为模板渲染器,django 1.11.6,python 3.6
我检查了一下这是否是jinja2的问题,我已经更改了children.values属性children.values()等
现在在管理员界面上,我看到所有元素都是“html字符串”,而不是实际的输入字段
谢谢我认为这可能是因为您的
节设置.html
模板位于通常用于jinja2模板的位置内-可能是某些应用程序/jinja2/personal\u web/admin\u blocks/section\u设置.html
(如果您使用的配置如所示)-并最终被解释为Jinja2模板。以这种方式混合Jinja2和Django模板是未经测试的,并且可能以不可预知的方式失败(如您所看到的HTML被双重转义)
尝试将其移动到
某些应用程序/模板/personal\u web/admin\u blocks/section\u settings.html
,将模板更改回Django语法(children.values()
更改回children.values
,等等).您的部分设置.html
模板是否与wagtail/admin/templates/wagtailadmin/block\u forms/struct.html完全相同?如果没有,请张贴您的模板代码。请注意,您不能将jinja2用于此模板-Wagtail管理员始终将Django模板引擎用于其模板,而不管您在站点前端使用的是什么。我已使用部分_settings.html代码编辑了我的帖子。由于错误,我不得不将children.values改为children.values()。。。但我的模板在我的应用文件夹中。。。我没有用wagtail模板路径结构覆盖wagtail struct.html模板。这是原因吗?“这是原因吗”-好吧,有一个简单的方法来找出!删除它,看看问题是否仍然存在。不,这不是原因,如果我清空了_settings.html部分并在管理员上写一个“div”,例如,它呈现为html字符串而不是实际的html元素?
<div class="{{ classname }}">
{% if help_text %}
<div class="object-help help">{{ help_text }}</div>
{% endif %}
<ul class="fields">
{% for child in children.values %}
<li{% if child.block.required %} class="required"{% endif %}>
{% if child.block.label %}
<label{% if child.id_for_label %} for="{{ child.id_for_label }}"{% endif %}>{{ child.block.label }}:</label>
{% endif %}
{{ child.render_form }}
</li>
{% endfor %}
</ul>
</div>