为文件字段和图像字段提供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第三方库


热门话题
rest如何在java中访问摘要身份验证   Java如何获取类和jar文件的Java代码   java查找给定数字中的十进制数   类Lcom/google/firebase/FirebaseApp中没有虚拟方法zzbzo()Z;或者它的超类   javahibernate二级缓存&JUnit   java如何自动添加XMLAnnotations   使用java在google drive中获取上传的文件名?   Java使用GLFW复制可转移图像   java Android Intent不会发送值   使用Objectify在Google CloudDatastore中使用java findRecord   照片编辑器中的java pointerIndex超出范围异常   java使用Spring Boot/JPA生成唯一字段的正确方法是什么?   安卓无法在firebase上上载图像,因为拒绝了之前失败的java类上的reinit。类错误   java如何在thymeleaf中构建绝对URL?   从Linux到2012r2 Active Directory的LDAPS Java查询的最低要求是什么   泛型Java接口反射   带地址字段的java Google地图标记   关于即将推出的forkjoin框架的java资源   jsp中的BEAN法则