z3c.form 的文件小部件,使用Grok
项目描述
dolmen.widget.file 是一个与 dolmen.file 并肩发展的包。它提供了一种可使用和可插入的方式,在 z3c.form.Form 中渲染 dolmen.file.FileField ,使用 Grok(通过 megrok.z3cform.base )
示例
我们将在这里开发一个小示例,以展示 dolmen.widget.file 的使用。首先,我们需要创建一个具有文件字段的模型内容
>>> import dolmen.file >>> import grokcore.component as grok >>> from zope.interface import Interface >>> from zope.schema.fieldproperty import FieldProperty >>> class ITravelMount(Interface): ... luggage = dolmen.file.FileField(title=u'Luggages') >>> class Mammoth(grok.Context): ... grok.implements(ITravelMount) ... luggage = FieldProperty(ITravelMount['luggage'])
我们现在有一个旅行猛犸象,我们可以在它上面添加行李。现在,我们需要一个表单来编辑这个动物
>>> from megrok.z3cform.base import EditForm
>>> class EditMammoth(EditForm):
... grok.name('edit')
... grok.context(ITravelMount)
>>> grok.testing.grok_component('edit', EditMammoth)
True
让我们实例化一个猛犸象并尝试在它上面调用表单
>>> from zope.component import getMultiAdapter
>>> from zope.publisher.browser import TestRequest
>>> manfred = Mammoth()
>>> request = TestRequest()
>>> form = getMultiAdapter((manfred, request), name='edit')
>>> form.updateWidgets()
>>> print form.widgets['luggage'].render()
<span id="form-widgets-luggage"
class="file-widget required filefield-field">
<BLANKLINE>
<BLANKLINE>
<BLANKLINE>
<input type="file" id="form-widgets-luggage-input"
name="form.widgets.luggage" />
<BLANKLINE>
<BLANKLINE>
</span>
<BLANKLINE>
现在,让我们尝试使用一个值
>>> manfred.luggage = "A nice data"
>>> form = getMultiAdapter((manfred, request), name='edit')
>>> form.updateWidgets()
>>> print form.widgets['luggage'].render()
<span id="form-widgets-luggage"
class="file-widget required filefield-field">
<BLANKLINE>
<div style="padding-top: 1em;">
<input type="radio" value="nochange" checked="checked"
class="noborder"
name="form.widgets.luggage.nochange"
onclick="document.getElementById('form-widgets-luggage-input').disabled=true"
id="form-widgets-luggage-nochange" />
<label for="form-widgets-luggage-nochange">Keep existing file</label>
<br />
<BLANKLINE>
<label for="form-widgets-luggage-delete">Delete existing file</label>
<br />
<input type="radio" value="" class="noborder"
name="form.widgets.luggage.nochange"
onclick="document.getElementById('form-widgets-luggage-input').disabled=false"
id="form-widgets-luggage-replace" />
<label for="form-widgets-luggage-replace">Replace with new file</label>
</div>
<div style="padding-left: 1.5em; padding-top: 0.5em;">
<input type="file" id="form-widgets-luggage-input"
name="form.widgets.luggage" />
<script type="text/javascript">document.getElementById('form-widgets-luggage-input').disabled=true;</script>
</div>
</span>
<BLANKLINE>
变更日志
0.2 (2010-03-01)
代码库已被清理,以符合 pep8 标准。
我们现在使用 zope.size.ISized 适配器来获取要显示的文件大小。
清理了依赖项。在可能的情况下已断开 zope.app 的依赖关系。
0.1 (2009-10-21)
初始版本
项目详情
关闭
dolmen.widget.file-0.2.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | c84525457eb6362cbac0e6a067884e6d8683dffeb070ef1d3e42005a12a4b555 |
|
| MD5 | db0fc3e6d0ad2b8149331a357d67d66f |
|
| BLAKE2b-256 | 5a413cd42f377d229a7e53be929a9060d0579ba26940f8c65ce6724bd2e8da56 |