为文件字段和图像字段提供ajax文件上载功能,表单中有一个简单的小部件替换。

django-ajax-upload-widget的Python项目详细描述


为文件字段和图像字段提供ajax文件上载功能,表单中有一个简单的小部件替换。

不需要更改模型字段或应用程序逻辑。这个插件的作用是透明的,这样你的模型表单就可以把文件当作是通过“传统的”浏览器文件上传来的。

功能

  • 替换django内置的ClearableFileInputwidget(不需要更改模型)。
  • 适用于所有主流浏览器,包括IE 7+。
  • 添加到文件名的随机哈希字符串,以确保上载的文件路径不会被其他人猜测。

用法

有关工作示例,请参阅包中包含的example应用程序。

服务器端

在表单中,使用FileFieldImageField上的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传输插件(包含在此包中)

应用程序安装

  1. ajax_upload添加到INSTALLED_APPS设置中。

一。钩住网址。

# urls.py
urlpatterns += patterns('',
    (r'^ajax-upload/', include('ajax_upload.urls')),
)
  1. 就这样(不要忘记包括上面提到的javascript)。

运行测试

./manage.py test ajax_upload

许可证

此应用程序是根据BSD许可证授权的有关详细信息,请参见许可文件。

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

推荐PyPI第三方库


热门话题
算法根据Java中传递的参数定义数据类型   java将图像文件存储在Google云存储桶中后,显示大小为“0字节”的所有文件列表   swing Java表模型删除Bounds 1的行排列   java中表上的for循环基本迭代   带有Http请求和UTF8的java下载文件   java滞后于setImageDrawable   java如何使用println按单位打印同一列中的数字列表?   中文Windows版本的Java默认编码   java编程项目,ADT列表   无法识别java消息部分MyClass。(它是否存在于服务WSDL中?)   java从IJavaProject或IProject获取到org。阿帕奇。专家模型模型   如何使用枚举(如java类变量)实现运行时同态?   使用集合对特定于Java的练习进行排序。分类   调试如何调试已作为exe文件运行的java应用程序?   java如何将带有模块的项目导入到另一个项目中,而不丢失封装?