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

构建配置

此包附带一个最小的buildout配置,该配置允许运行 测试:

$ python bootstrap.py
$ bin/buildout
$ bin/test

更改

0.7(2015-12-09)

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.4(2010-06-17)

作者:Roman Joost<;roman@mooball.com>;:

  • 添加了分组表单支持。
  • 添加了分隔符、最小查询长度和 提前打印功能

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)

  • 首次发布
  • 注意:自动完成搜索视图中仍缺少安全声明。 这意味着任何人都可以查询源中的值。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java组在不同线程中记录消息   java Wicket挂载404错误页   Java:如何制作对象数组的副本?   类似Windows中的java日期时间选择器   java无法获取JTextField用户输入以搜索文本文件   安卓 Java:如何随机更改背景和字体颜色   Java定时器中的摆动变化延迟   java让Selenium暂停X秒   将响应传递到视图时发生java Nativescript错误   java刷新安卓列表视图的最佳方式是什么?   单java进程的多线程队列/工作线程体系结构   web服务Java NoSuchMethodException   java groupingBy和filter一步到位   java游标。getCount()给定错误   即使引用的文件位于项目根目录中,java PrintWrite仍会持续引发“未找到文件”异常