z3c.form的ajax自动完成小部件
gocept.autocomplete的Python项目详细描述
版权所有(c)2009-2015 Gocept GmbH&Co.KG 保留所有权利
本软件受Zope公共许可证的约束, 版本2.1(zpl)。此发行版应附带ZPL的副本。 本软件按“原样”提供,任何及所有明示或暗示的 不作任何保证,包括但不限于 所有权、适销性、侵权和适用性保证 为了特定的目的。
自动完成小部件
autocomplete为z3c.form提供了一个自动完成小部件。 如果您希望向用户提供建议列表,则该小部件非常有用 对于一个字段,但仍然希望接受输入的任何其他内容。
要使用小部件,请<;include package=“gocept.autocomplete”>;并提供 实现gocept.autocomplete.interfaces.isearchablesource的源代码。 这意味着两件事,一是源代码必须提供一个search()方法,以便 查询值(包括查询时输入的值)和 第二,必须始终从包含的方法返回true,以便 用户可以自由输入不属于建议的值。
无需进一步配置,小部件将自动注册 所有带有isearchablesource的字段。
例如,我们使用 测试浏览器:
>>> import zope.app.testing.functional >>> root = zope.app.testing.functional.getRootFolder() >>> import gocept.autocomplete.tests.color >>> house = gocept.autocomplete.tests.color.House() >>> root['house'] = house
>>> import zope.testbrowser.testing >>> b = zope.testbrowser.testing.Browser() >>> b.handleErrors = False
AutoCompleteWidget是一个增强的文本小部件。因此,在显示模式下, 行为就像一个文本小部件:
>>> b.open('http://localhost/house') >>> print b.contents <?xml... ...<span id="form-widgets-color" class="text-widget autocomplete required choice-field"></span>...
但在编辑模式下,它会生成额外的javascript代码:
>>> b.addHeader('Authorization', 'Basic mgr:mgrpw') >>> b.open('http://localhost/house') >>> print b.contents <?xml... ...<script src=".../autocomplete-min.js"... ...<input id="form-widgets-color"... ...<div id="form-widgets-color-container"... ...DS_XHR("http://localhost/house/@@index.html/++widget++color/@@autocomplete-search"... ...new YAHOO.widget.AutoComplete( "form-widgets-color", "form-widgets-color-container"...
通过在小部件上注册的视图填充自动完成功能:
>>> b.open('http://localhost/house/@@index.html/++widget++color/@@autocomplete-search') >>> print b.contents >>> b.open('http://localhost/house/@@index.html/++widget++color/@@autocomplete-search?q=r') >>> print b.contents red ruby
但是我们仍然可以输入任何想要的值并保存它(有两部分 要使其工作,一个是源必须始终在其 _包含的方法,另一个是小部件使用 titledTokenIzedTerm,它使用所有内容的实际值):
>>> b.open('http://localhost/house') >>> b.getControl('Color').value = 'foo' >>> b.getControl(name='form.buttons.apply').click() >>> print b.contents <?xml... ...foo...
分组窗体
特殊情况是组表单,它们在 他们的团体。为了这个特殊的场合,我们设置了一个 ApartmentGroup和表单:
>>> apartment = gocept.autocomplete.tests.color.Apartment() >>> root['apartment'] = apartment
分组表单的小部件遍历返回正确的搜索 结果:
>>> b.open('http://localhost/apartment/@@grouped.html/++widget++color/@@autocomplete-search?q=r') >>> print b.contents red ruby >>> b.open('http://localhost/apartment/@@grouped.html/++widget++number/@@autocomplete-search?q=1') >>> print b.contents 12A 12
开发gocept.autocomplete
Author: | gocept <mail@gocept.com> |
---|---|
PyPI page: | http://pypi.python.org/pypi/gocept.autocomplete/ |
Issue tracker: | https://bitbucket.org/gocept/gocept.autocomplete/issues/ |
Source code: | https://bitbucket.org/gocept/gocept.autocomplete/ |
Current change log: | |
https://bitbucket.org/gocept/gocept.autocomplete/src/tip/CHANGES.txt |
构建配置
此包附带一个最小的buildout配置,该配置允许运行 测试:
$ python bootstrap.py $ bin/buildout $ bin/test
更改
0.7(2015-12-09)
- 将代码移到https://bitbucket.org/gocept/gocept.autocomplete。
- 将测试和代码更新到Python2.7和ZTK1.1.6。
0.6(2013-04-23)
- 切换到jquery ui和fanstatic,而不是yui和zc.resourcelibrary。
0.5(2011-01-11)
- configure.zcml不再包含zope.app.zcmlfiles,它已被移动 到ftesting.zcml。
- 在自述文件中描述了对zc.resourcelibrary的依赖性,这使得 此包与使用hurry.resource的包不兼容。
0.3(2010-02-26)
- “估计”小部件url的方式略有不同:使用表单的上下文, 不是getcontent()方法:如果使用适配器重定向内容 那么这个观点可能就不存在了。
0.2(2009-02-23)
- 使用isearchablesource注册ichoice字段的小部件。 此功能取决于z3c.form>;=r96460(将包含在 Z3C.表格-2.0)。
- 即时消息证明文件。
0.1(2009-02-06)
- 首次发布
- 注意:自动完成搜索视图中仍缺少安全声明。 这意味着任何人都可以查询源中的值。