项目地址: https://github.com/vicalloy/django-ajax-validation
django-ajax-validation是一个使Django支持表单AJAX校验的第三方APP。我做了一些修改,增加了表单的AJAX提交以及twitter-bootstrap的支持。
安装
- pip install git+git://github.com/vicalloy/django-ajax-validation.git
- 在Django settings的INSTALLED_APPS中加上”ajax_validation”。
一个简单的使用范例
views.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from ajax_validation.views import validate_form from ajax_validation.utils import render_json_response ... class TimelineForm(forms.ModelForm): class Meta: model = Book def add_book(request): #创建表单并进行校验。返回表单以及校验结果。 form, validate = validate_form(request, form_class=BookForm) if validate['valid']:#如果校验成功,执行保持操作 book = form.save() return render_json_response(validate)//返回JSON |
模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<form action="{% url book_new %}" id="form" enctype="multipart/form-data" method="post"> </form> <!-- 引用依赖JS包。ajax_validation还依赖jquery,除下面的JS外还需要引入JQuery的JS包 --> <script type="text/javascript" src="{{ STATIC_URL }}ajax_validation/js/jquery.djangoajaxform.js"></script> <script type="text/javascript"> $('#form').djangoajaxform({ onValidateSucc: function(data, form){ if (data.valid) { //保存成功。执行保存成功的操作,如自动更新界面上的条目信息等。 alert("保存成功"); } else { //保存失败,系统会自动将出错信息显示在界面上。 } } }); </script> |
进阶
django-ajax-validation的原始文档就写的非常糟糕,我也偷懒,所以想了解更多还是直接看代码吧。
- timeline-site 中评论功能的AJAX实现。
- django-ajax-validation代码