一个django应用程序,用select2提供ajax自动完成功能。
django-select2-rocks的Python项目详细描述
这个项目的灵感来自Django-Select2和 django-select2light。
Django-select2-rocks是根据BSD 2条款许可证发行的。
安装
- pip install django_select2_rocks
- 将select2rocks添加到INSTALL_APPS
- python manage.py collectstatic将安装django select2 rocks js。
- 包括jquery(1.7+)、select2 js/css(未提供,用v3.4.5测试)和 在模板中选择2rocks/select2rocks.js。
- 现在,您可以在表单中使用Select2ModelChoiceField字段。
设计
django-select2-rocks提供了用于呈现和初始化select2输入的小部件。
小部件呈现是基于django的,接下来的一步是添加一个js 每个输入的初始化(在dom就绪时)。当在 输入字段,ajax请求被发送到与该字段关联的url。
widget api的设计允许您传递任何想要传递的参数 选择2 js code(例如allowclear选项)。
您可以使用各种json视图来回答select2 ajax查询,因此 调整搜索条件或结果的格式,可以扩展 默认django-select2-rocks后端(请参见testproj中的select2rocks-backends.js 例如)。
示例
testproj项目包含一个简单的json视图、一个tastype和一个 django rest框架视图。
importselect2rocksclassBeachForm(forms.Form):beach=select2rocks.Select2ModelChoiceField(queryset=Beach.objects.all(),widget=select2rocks.AjaxSelect2Widget(url_name='json_beaches'))
微妙之处
注意,字段的内部表示使用逗号(,)分隔项。因此,不能使用逗号 在你的标签上。否则我们会将其解释为分隔符并尝试处理逗号两边的文本, 很可能会破裂。
获取代码
django-select2-rocks是在github上开发的:
https://github.com/polyconseil/django-select2-rocks
您可以克隆公共存储库:
$ git clone git://github.com/polyconseil/django-select2-rocks.git
一旦您有了源代码的副本,就可以使用以下命令安装它:
$ python setup.py install