跳转到主要内容

为Django提供的动态表单

项目描述

https://img.shields.io/pypi/dm/django-dynamic-fields.svg https://secure.travis-ci.org/yourlabs/django-dynamic-fields.png?branch=master https://codecov.io/github/yourlabs/django-dynamic-fields/coverage.svg?branch=master Documentation status

此应用程序提供客户端和服务器端动态表单类功能。例如,如果您想在一个字段具有特定值时删除该字段,或者根据一组条件筛选选择项。当在master上测试提交时,演示会自动更新。

支持Pypy,Python 2.7,3.4,Django 1.8+。

示例

例如,如果您的表单仅允许在选择Linux时支持

from ddf import shortcuts as ddf

class TestForm(ddf.FormMixin, forms.Form):
    platform = forms.ChoiceField(choices=(
        ('Linux', 'Linux'),
        ('Windows', 'Windows'),
    ))
    service = forms.ChoiceField(choices=(
        ('Format', 'Format'),
        ('Support', 'Support')
    ))

    # Remove the 'Support' choice from the 'service' field if 'platform'
    # value is 'Windows':
    _ddf = dict(
        service=[
            ddf.RemoveChoices(
                ['Support'],
                ddf.ValueIs('platform', 'Windows'),
            )
        ]
    )

在这个例子中,我们创建了一个配置字段,并将RemoveChoices操作添加到服务字段中,条件是平台字段值为Windows。

配置字段能够将配置渲染为JSON字典,包括渲染时的表单前缀。然后,在JavaScript中实例化每个操作和条件对象,允许动态用户体验。

配置结构如下:对于每个字段,您可以添加一个动作列表,对于每个动作,可以添加一个条件列表。当用户更改字段时,将评估每个动作的条件,如果所有条件都通过,则应用该动作,否则取消应用。这里可能性很大。

双重许可

它以Creative Commons Attribution-NonCommercial 3.0 Unported License发布,但也可以获得商业许可,如果您感兴趣,请联系my username @ yourlabs.org。

请注意,资金将流向YourLabs,一个非营利性基金会,以促进黑客在使我们的社会更加公平和自由过程中的作用,同时利用他们的技能发展当地经济并将互联网返还给人民。

状态

该项目相对较新,但基本构建模块已经存在。我们应该可以轻松地添加动作和条件。

为什么

多年来我们一直在不断发明这个。第一次发明这个是在2009年,那时我的python、django和javascript技能相当薄弱。从那时起,我看到了用户提出这个问题,以顾问的身份向我支付费用,以及提交拉取请求,希望以应用程序为基础实现这一功能。现在是时候有一个适用于所有类型字段的通用解决方案,而不仅仅是维护的应用程序的字段了。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

ddf-0.0.0.tar.gz (5.3 kB 查看哈希值)

上传时间

由以下组织支持