处理零个或多个同名表单输入的django实用程序包。

django-xfield的Python项目详细描述


简介

这是一个django实用程序包,用于处理零个或多个同名表单输入。

通常情况下,您需要为同一字段允许零个或多个值。例如:

输入您最喜欢的颜色:

1.    [ red       ] [+] [-]
2.    [ purple    ] [+] [-]
3.    [ green     ] [+] [-]

作为django表单集的替代,您可以选择对django xfield执行以下操作:

# forms.py
class FavColorForm(forms.Form):
    colors = ExpandableField(fields.CharField, min_values=3, max_length=100)
# views.py
def echo_fav_colors(request):
    form = FavColorForm(request.POST)
    if form.is_valid():
        # because 'colors' is an expandable field, it returns a list of all values submitted by the name 'colors'
        colors = self.cleaned_data['colors']
        assert colors == ['red', 'purple', 'green']
        ...

django xfield引入了两个类(它们是伪装的闭包):ExpandableFieldExpandableWidget,它们都是返回子类的工厂 作为第一个位置参数提供的类的。ExpandableField接受2个可选参数-min_valuesmax_values,并传递 其余的参数(如果提供)到实际的字段类进行初始化。

min_values
用户必须提供的最小值数,默认为0
max_values
用户可以提供的最大值,默认为无(^ {STR 1 } $警告<强>未实现)< /dD>

例如,“colors”被分配给charfield的一个子类,该子类返回一个列表,其中至少包含3个项/值。

就像普通字段一样,如果默认值不是您想要的,您可以提供不同的小部件。但是,小部件必须是 返回ExpandableWidget的类(回想一下ExpandableWidget是闭包,而不是类)。例如:

class FavColorForm(forms.Form):
    colors = ExpandableField(fields.CharField, min_values=3, max_length=100, widget=ExpandableWidget(Textarea, min_values=3))

注意如果要提供自定义的ExpandableWidget,则必须传递相同的min_values/max_values

这简化了服务器端和客户端(javascript)编程。有关工作示例的列表,请访问http://demo.phuihock.com/xfield/。 或者,您也可以在本地运行演示:

$ git clone git://github.com/phuihock/django-xfield.git
$ virtualenv --distribute django-xfield
$ cd django-xfield
$ source bin/activate
$ pip install -r req.txt
$ python manage.py runserver

然后,转到http://127.0.0.1:8000/

对我有用的未必对其他人都有用。如果您觉得这个实用程序很有用,并且需要特定用例的示例,我很乐意提供一些。 另外,请查看演示应用程序。

安装

$ pip install django-xfield

这不是Django应用程序,因此您不必将其添加到已安装的应用程序中。

警告

django xfield使用简单的字段类型,例如charfield、integerfield、choicefield-返回单个值。它不会 支持多值字段或其任何子类。也就是说,不要将它与splitDateTimeField或多值字段子类一起使用。

错误

很可能。如果你找到了,请提出一个问题。

待办事项

这应该是个问题,但为了记录,这件事需要测试,很多测试。

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

推荐PyPI第三方库


热门话题
java什么数据库最类似于Map,每个用户/id存储无限多个“键”和“值”?   java仅使用super pom进行测试   内存不足如何解析java。OutOfMemoryError:Java堆空间在增加堆大小的情况下将意味着延迟OutOfMemoryError   来自另一个类的mysql和java jdbc调用[运行时应用程序]   java通过下拉菜单更改搜索框搜索的内容   JAVAlang.ClassNotFoundException:sun。jdbc。odbc。JdbcOdbcDriver   java Selenium点击链接   JavaSpringHibernate:从唯一值列表中获取对象列表   java Bing广告与桌面身份验证问题   java如何在没有任何外部SDK的情况下从安卓打印到收据打印机?   未调用java菜单片段类   java在IDEA和PyCharm中同时为同一个项目工作   java我们如何为同一个异常提供不同的海关信息   jakarta ee中是否预定义了“请求”和“响应”变量或值?   java更好地解决“之前和之后”难题?   尝试将数据从Excel添加到Java   发送电子邮件的Java代码只适用于一个电子邮件id?   java如何从资产解析XML?