一个提供AJAX自动完成的Django应用程序,使用Select2。
项目描述
本项目受Django-Select2和django-select2light的启发。
Django-select2-rocks在BSD 2条款许可证下分发。
安装
pip安装django_select2_rocks
将select2rocks添加到您的INSTALL_APPS
python manage.py collectstatic将安装Django Select2 Rocks JS。
在您的模板中包含jQuery (1.7+)、Select2 JS/CSS(未提供,已测试与v3.4.5版本兼容)和select2rocks/select2rocks.js。
现在,您可以在表单中使用Select2ModelChoiceField字段。
设计
Django-select2-rocks提供小部件来渲染和初始化Select2输入。
小部件渲染基于Django,进一步添加每个输入的JS初始化(在DOM就绪时)。当在输入字段中键入字符时,会向与字段关联的URL发送AJAX请求。
小部件API设计用于允许您将任何您想要的参数传递给Select2 JS代码(例如,允许清除选项)。
您可以使用各种JSON视图来响应用户选择2的AJAX查询,因此,为了调整搜索词或结果格式,您可以扩展默认的django-select2-rocks后端(请参阅testproj中的select2rocks-backends.js以获取示例)。
示例
testproj项目包含带有简单JSON视图和Django REST框架视图的示例。
import select2rocks
class BeachForm(forms.Form):
beach = select2rocks.Select2ModelChoiceField(
queryset=Beach.objects.all(),
widget=select2rocks.AjaxSelect2Widget(url_name='json_beaches'))
注意事项
请注意,字段的内部表示使用逗号(,)来分隔项目。因此,您不能在您的标签中使用逗号。否则我们将将其解释为分隔符,并尝试处理逗号两边的文本,这很可能会导致错误。
获取代码
Django-select2-rocks在GitHub上开发
您可以选择克隆公共仓库
$ git clone git://github.com/polyconseil/django-select2-rocks.git
一旦您有了源代码的副本,您可以使用以下命令安装它
$ python setup.py install