AXANT ToscaWidget2 小部件集合
项目描述
AXF是一个基于AXEL Loader的资源加载的ToscaWidgets2小部件集合,以便能够替换资源并通过AJAX请求加载小部件。
安装
axf可以从pypi安装
easy_install axf
或者
pip install axf
应该适用于大多数用户
布局
AXF为Bootstrap提供了TW2布局,作为axf.bootstrap.BootstrapFormLayout提供,以便您的表单使用bootstrap3时,其布局继承自它
from axf.bootstrap import BootstrapFormLayout class BootstrapRegistrationForm(Form): class child(BootstrapFormLayout): text = TextField(label=l_('Text')) submit = SubmitButton(value=l_('Register'), css_class='btn btn-default')
使用小部件
要开始使用AXF小部件,您必须将axel添加到您的页面中,以便小部件可以加载其资源
<script src="https://raw.github.com/amol-/axel/master/src/axel.js"></script>
AXEL加载器用于代替标准的ToscaWidgets2资源注入,以便通过jQuery.load加载表单,因为资源加载和注入由AXEL执行,而不是通过响应操作将资源附加到head或body,因此不需要。
如果您想在TurboGears中通过AJAX请求加载和提交表单,请考虑使用tgext.ajaxforms
可以使用AXEL加载器替换小部件所需资源。大多数小部件将依赖于jQuery,并将从jQuery CDN加载它。如果您的网站使用jQuery并希望使用不同版本的jQuery,您可以使用以下方法轻松替换:
axel.register('jquery', 'https://ajax.googleapis.ac.cn/ajax/libs/jquery/1.9.1/jquery.min.js');
只需将您的注册信息放在显示小部件之前,您的库版本将被使用。
每个小部件都会列出其资源,这些资源是以在AXEL中注册时使用的名称列出的,以便您可以替换它们。
AjaxAutoCompleteField
axf.widgets.ajax_autocomplete_field.AjaxAutocompleteField 是一个字段,它基于select2和json API提供自动完成功能。每个条目都必须提供一个 text,该文本显示给用户,以及一个 id,该id与表单一起提交。text 和 id 可以在纯文本自动完成中相同。
该字段需要两个参数 datasource 和 inverse_datasource,分别用于获取用户写入的文本可用的数据列表的API以及用于获取与已选择的条目对应的文本的API(例如,在验证错误或编辑现有数据的情况下)
示例
city = AjaxAutocompleteField(label=l_('City'), validator=validators.Validator(required=True), placeholder=l_('Select City'), datasource=lurl('/ajax/get_cities'), inverse_datasource=lurl('/ajax/city_from_id'))
资源
jquery - jQuery库
select2 - select2库
select2-style - select2样式表
数据源API
API需要接受一个用于搜索的术语作为输入,返回一个包含 {text: "value", id: "id"} 条目的列表,并带有指示是否还有更多数据的标记
@expose('json') def get_cities(self, term='', **kw): return dict(more=False, results=[dict(text=c[1], id=c[0]) for c in cities_dict.items()])
反向数据源API
API需要接受一个id作为参数,格式为 /apiname/ID,并返回对应条目的 text 和 id
@expose('json') def city_from_id(self, city_id=None, **kw): return dict(text=cities_dict.get(city_id), id=city_id)
AjaxSingleSelectField
axf.widgets.ajax_single_select.AjaxSingleSelectField 是一个字段,它在其他字段更改时从数据源API加载数据。这可以用于实现级联单选字段,其中可用的选项取决于另一个选择。
该字段需要两个参数 datasource,这是用于请求其他字段值的值的API,以及 onevent,这是一个包含选择器和javascript事件的元组(目前被忽略),指定哪个字段应触发数据更新。每当指定的选择器字段更改时,单选字段就会重新加载,并要求数据源提供数据。
示例
category = forms.SingleSelectField(label=l_('Category'), options=Deferred(get_categories), validator=validators.Validator(required=True)) subcategory = AjaxSingleSelectField(label=l_('Sub Category'), onevent=('#category', 'change'), prompt_text=None, validator=validators.Validator(required=True), datasource=lurl('/ajax/get_subcategories'))
资源
jquery - jQuery库
数据源API
API需要接受通过 onevent 选项链接的字段当前值,并返回一个以 {name: "name", value: "value"} 格式的 AjaxSingleSelectField 选项列表
@expose('json') def get_subcategories(self, selected=None, **kw): if not selected: return dict(options=[]) return dict(options=[dict(name=c['name'], value=c['id']) for c in subcategories.get(selected, [])])
AjaxCascadingField
axf.widgets.ajax_cascading_field.AjaxCascadingField 是一个字段,它在其他字段更改时从数据源API加载数据。这可以用于实现输入字段,其中值取决于另一个选择。
该字段需要三个参数 datasource,这是用于请求其他字段值的值的API,onevent 是一个包含选择器和javascript事件的元组(目前被忽略),指定哪个字段应触发数据更新,以及 type,这是输入的类型。每当指定的选择器字段更改时,输入字段就会重新加载,并要求数据源提供数据。
示例
category = forms.SingleSelectField(label=l_('Category'), options=Deferred(get_categories), validator=validators.Validator(required=True)) category_description = AjaxCascadingField(label=l_('Category Description'), onevent=('#category', 'change'), prompt_text=None, validator=validators.Validator(required=True), datasource=lurl('/ajax/get_category_description'), type='textarea')
资源
jquery - jQuery库
数据源API
API需要接受通过 onevent 选项链接的字段当前值,并返回 AjaxCascadingField 的值,格式为 {value: "value"}
@expose('json') def get_category_description(self, selected=None, **kw): if not selected: return dict(value='') return dict(value=category[selected].get('description'))
WysiHtml5TextArea
axf.widgets.wysihtml5_text_area.WysiHtml5TextArea 是一个具有所见即所得编辑器的文本区域
WysiHtml5TextArea 需要与 tw2 TextArea 相同的参数,当渲染结果 HTML 时,必须声明对齐的 CSS 规则
.wysiwyg-text-align-right { text-align: right; } .wysiwyg-text-align-center { text-align: center; } .wysiwyg-text-align-left { text-align: left; }
示例
description = WysiHtml5TextArea(label=l_('Description'), validator=Validator(required=True), rows=8)
资源
jquery - jQuery库
WYSIHTML5 - WYSIHTML5 库
wysihtml5ParserRules - WYSIHTML5 解析器
wysihtml5_text_area.css - WYSIHTML5 样式
项目详细信息
axf-0.0.19.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e5ddb4b7a26dd630b0a10f82a8c39be1fd36aa44b3c0f04343a7756730237164 |
|
MD5 | 424dc7119c89fcee0457746ee023ecb1 |
|
BLAKE2b-256 | adc259fc412cba7d1aef1b3c69a42cdcc967e7cd76d8226aa8d38f4f6c8b1ddb |