为文件字段和图像字段提供ajax文件上载功能,表单中有一个简单的小部件替换。
django-ajax-upload-widget的Python项目详细描述
为文件字段和图像字段提供ajax文件上载功能,表单中有一个简单的小部件替换。
不需要更改模型字段或应用程序逻辑。这个插件的作用是透明的,这样你的模型表单就可以把文件当作是通过“传统的”浏览器文件上传来的。
功能
- 替换django内置的ClearableFileInputwidget(不需要更改模型)。
- 适用于所有主流浏览器,包括IE 7+。
- 添加到文件名的随机哈希字符串,以确保上载的文件路径不会被其他人猜测。
用法
有关工作示例,请参阅包中包含的example应用程序。
服务器端
在表单中,使用FileField或ImageField上的AjaxClearableFileInput
from django import forms from ajax_upload.widgets import AjaxClearableFileInput class MyForm(forms.Form): my_image_field = forms.ImageField(widget=AjaxClearableFileInput())
或者,如果使用ModelForm,则可以覆盖小部件
from django import forms from ajax_upload.widgets import AjaxClearableFileInput class MyForm(forms.ModelForm): class Meta: model = MyModel widgets = { 'my_image_field': AjaxClearableFileInput }
客户端
在页面中包含javascript(和可选的css)文件并调用autoDiscover函数。 这将在页面中搜索所有AJAX文件输入字段并应用必要的Javascript
<link href="{{ STATIC_URL }}ajax_upload/css/ajax-upload-widget.css" rel="stylesheet" type="text/css"/> <script src="{{ STATIC_URL }}ajax_upload/js/jquery.iframe-transport.js"></script> <script src="{{ STATIC_URL }}ajax_upload/js/ajax-upload-widget.js"></script> <script> $(function() { AjaxUploadWidget.autoDiscover(); }); </script>
您还可以将选项传递给autoDiscover():
<script> $(function() { AjaxUploadWidget.autoDiscover({ changeButtonText: 'Click to change', onError: function(data) { alert('Error!'); } // see source for full list of options }); }); </script>
或者…您可以在ajax文件输入字段上显式实例化ajaxuploadwidget:
<input id="Foo" name="foo" type="file" data-upload-url="/ajax-upload/" data-filename="" data-required=""/> <!-- The input field needs to be outputed by Django to contain the appropriate data attributes --> <script> new AjaxUploadWidget($('#Foo'), { // options }); </script>
依赖关系
- jquery 1.7+
- jQuery Iframe传输插件(包含在此包中)
应用程序安装
- 将ajax_upload添加到INSTALLED_APPS设置中。
一。钩住网址。
# urls.py urlpatterns += patterns('', (r'^ajax-upload/', include('ajax_upload.urls')), )
- 就这样(不要忘记包括上面提到的javascript)。
运行测试
./manage.py test ajax_upload
许可证
此应用程序是根据BSD许可证授权的有关详细信息,请参见许可文件。