跳转到主要内容

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与表单一起提交。textid 可以在纯文本自动完成中相同。

该字段需要两个参数 datasourceinverse_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,并返回对应条目的 textid

@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;
}

WysiHtml5 文档

示例

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 (79.3 kB 查看哈希值)

上传时间

由以下支持