为zope.formlib提供自动完成字段和小部件
horae.autocomplete的Python项目详细描述
简介
horae.autocomplete包为 zope.formlib基于 autocomplete widget of jQuery UI。
用法
有两种类型的自动完成字段可用:
- 自动完成列表
- 允许选择多个值
- 自动完成技术
- 允许选择一个值
要为列表或选择字段启用自动完成功能,只需替换List 分别是来自zope.schema的Choice。 由horae.autocomplete.fields:
from zope import interface, schema from horae.autocomplete import fields class ISampleSchema(interface.Interface): """ A schema using an autocomplete choice and list field """ choice = fields.AutocompleteChoice( values = (u'one', u'two', u'three',) ) list = fields.AutocompleteList( value_type = schema.Choice( values=(u'Tag 1', u'Tag 2', u'Tag 3',) ) )
AutocompleteChoice字段的参数与Choice字段的参数完全相同 由zope.schema提供同样的道理 使用与的List字段相同参数的AutocompleteList字段 zope.schema唯一的限制是 value_type必须是Choice或TextLine字段。
高级使用
值提供者
在字段中输入术语时提供给用户的可用值 通过适配器实现horae.autocomplete.interfaces.IValueProvider存在默认值 已经实现了值提供程序,它根据给定的 输入字段的词汇表。这是通过在 词汇表并检查一个值是否与给定的输入匹配。非常大或无限大 词汇这是相当昂贵或根本不可能。有效地支持 词汇表值提供程序可以通过注册更特定的适配器来重写 实现horae.autocomplete.interfaces.IValueProvider。看那些适配器 按以下顺序向上排列,其中第一个找到的使用:
- 命名上下文提供程序
- 一个值提供程序,它调整在 与字段同名
- 命名的非文本提供者
- 使用与 字段
- 上下文提供程序
- 适应context、field和request的值提供程序
- 非文本提供者
- 一个适应field和request的值提供程序
自定义值提供程序的示例可以在horae.search 提供不可重写词汇表和相应值提供程序的包 使用目录中的全文搜索根据输入查找可用值。
字段提供者
如前一章所述,值提供者是至少适应 field和request要查找这些提供者,需要查找字段 第一。在大多数情况下,这根本不是问题,因为字段是由模式定义的 形式的。但在某些情况下,只有在呈现 然后只需要呈现整个表单以找到所需的字段有效地 支持这个用例,通过注册一个 适配器实现horae.autocomplete.interfaces.IFieldProvider并调整 context和request。
变更日志
1.0a1(2012-01-16)
- 初始版本