gpt4 book ai didi

python - 如何让字段以自定义 Plone 灵巧形式显示?

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:38 25 4
gpt4 key购买 nike

我试图避免在我的自定义添加表单中为一个 Plone 灵巧对象写出几百个字段。

我创建了一个从我的 customVisitFormTemplate.pt 调用的循环

    def otherFields2(self):
#print "this gets called3"
customs=""

fields = field.Fields(ISiteVisit)

#print dir(fields)
for r in fields:
#print dir(r)
#print r.title()
if r.startswith("current") or r.startswith("landCover") or r.startswith("surrounding"):
pass

else:
print 'in others', r
customs=customs+"""<tal:field tal:replace='structure view/widgets/%s/@@ploneform-render-widget'/>""" % (r)
print customs
return customs

在自定义模板中我这样调用它:

    <fieldset>
<legend>General Info</legend>
<span tal:define="otherFields view/otherFields2">
<div tal:content="structure otherFields" />
</span>
</fieldset>

但是,在执行时,tal 语句不会调用小部件,它会输出到 html:

<tal:field tal:replace="view/widgets/siteID/@@ploneform-render-widget" />

如果我在自定义模板中直接使用以下代码:

<tal:field tal:replace="view/widgets/siteID/@@ploneform-render-widget" />

它输出到 html 并且有效:

<div id="formfield-form-widgets-siteVisitNotes" class="field z3cformInlineValidation kssattr-fieldname-form.widgets.siteVisitNotes">
<label class="horizontal" for="form-widgets-siteVisitNotes"> Site Visit Notes </label>
<div class="fieldErrorBox"></div>
<textarea id="form-widgets-siteVisitNotes" class="textarea-widget text-field" name="form.widgets.siteVisitNotes"></textarea>
</div>

我如何从我的 .py 文件中获取我的循环代码以输出与“直接”代码相同的输出?

谢谢你的建议

最佳答案

经过一番尝试,我终于让这种复杂性发挥作用了:)。

      <fieldset>
<legend>General Info</legend>
<div>
<metal:define define-macro="widget_rendering"> <!-- not sure if this define-macro is needed -->
<span tal:define="widgets view/widgets/values">
<tal:widgets repeat="widget python:[w for w in widgets if not w.name.startswith('form.widgets.current') and not w.name.startswith('form.widgets.surrounding') and not w.name.startswith('form.widgets.landCover')]">

<metal:field-slot define-slot="field">
<metal:field define-macro="field">
<tal:widget tal:condition="python:widget.id !='form-widgets-url'"
tal:replace="structure widget/@@ploneform-render-widget"/>
</metal:field>
</metal:field-slot>
<!--</span>-->
</tal:widgets>
</span>
</metal:define>
<br> <!-- to keep label and input field together -->
</div>
</fieldset>

在调整页面大小时让标题和输入框保持在一起仍然存在问题,但排序代码有效。

关于python - 如何让字段以自定义 Plone 灵巧形式显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30926431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com