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 |