0

我一直在努力django ajax uploader工作。django application我一定是脑死了:(因为我无法让它工作——据许多代码用户说,这应该是一件容易的事。

我已经安装了django ajax 上传器 并将其添加到已安装的应用程序中。我决定不使用STATIC_URLs 而是将css and js文件放入MEDIA_ROOT并用于MEDIA_URL服务它们。

文档的第 4 步所述,我还在标签中包含了匿名函数- 将操作更改为<script>start.html{% url ajax_upload %}

在我的start.html页面中,我需要一个文件输入元素,以便在选择文件时将文件上传到服务器上的某个位置。

所以我像这样创建了html

<form enctype="multipart/form-data" method="post" action="{% url upload_without_ajax %}"> {% csrf_token %}
<input type="file" name="fselect" id="file-uploader"> </input>
</form>

start.html 由views.start方法呈现

视图.py -

def start(request, template_name):
    csrf_token = get_token(request)
    reqctx = RequestContext(request,{'csrf_token': csrf_token })
    return render_to_response(template_name,reqctx)

import_uploader = AjaxFileUploader()

这是我的问题。

1.给id=file-uploader输入元素是否足以导致文件上传?或者我必须$('#file-uploader').change(在我的javascript中调用一个?

2.我只需要将选择的文件写入MEDIA_ROOT/uploads文件夹,这是我认为默认LocalUploadBackend的。在 urls.py 我映射views.import_uploader到 url ajax_upload

url(r'^ajax_upload$', 'views.import_uploader',name='ajax_upload'),

尽管如此,没有文件上传发生..

我无法从 github 站点中的给定代码中得到太多信息。如果有人可以帮助我,将不胜感激

4

2 回答 2

2

除了html之外的一切似乎都很好。但是,您应该检查您是否有 python 2.7,因为 2.6+ 与 django-ajax-uploader 不兼容。(或相反亦然!)

如果你继续使用 python 2.7,你应该克隆https://github.com/lazerscience/django-ajax-uploader

git clone https://github.com/lazerscience/django-ajax-uploader
cd django-ajax-uploader
python setup.py install

这应该足够了。(不要忘记像 repo 中的示例那样更改 html,是的,#file-upload 可以与 jQuery 一起使用。

于 2013-05-13T14:55:17.767 回答
0

我目前也在处理我的 django-ajax 文件上传。但是我的模板部分通过放置默认值可以正常工作。

其中 file-uploader 是 div 的 id 而不是实际的输入文件类型。根据我在 fileuploader.js 中读到的内容,该脚本将使用标准样式为您创建文件上传元素。我不是 js 大师,但我相信您可以在 fileuploader.js 中自定义它?

在下面的 js 函数中,我试图通过尝试添加名称和值的新项目params: {..}并将action: "{% url ajax_upload %}",其指向此的新项目,将我的实例的 pk 作为 ajax 的参数传递url(r'^ajax-upload$', 'yourapp.views.import_uploader', name="ajax_upload"),

我希望这有没有帮助..给我投票:[

<!doctype html>
<head>
    <!--<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" ></script>-->
    <script src="{{ STATIC_URL }}js/jquery-1.9.1.js" ></script>
    <script src="{{ STATIC_URL }}ajaxuploader/js/fileuploader.js" ></script>
    <link href="{{ STATIC_URL }}ajaxuploader/css/fileuploader.css" media="screen" rel="stylesheet" type="text/css" />
    <script>

        function createUploader(pk){            
            var uploader = new qq.FileUploader({
                element: $('#file-uploader')[0],
                action: "{% url ajax_upload %}",
                debug: true,
                multiple: false,                    
                onComplete : function(id, fileName, responseJSON) {
                if(responseJSON.success) {
                    alert("success!");
                } else {
                    alert("upload failed!");
                }                    
                },                    
                params: {
                'csrf_token': '{{ csrf_token }}',
                'csrf_name': 'csrfmiddlewaretoken',
                'csrf_xname': 'X-CSRFToken',
                'pk': pk,
                },           
            });
        };

        $(document).ready(function(){
            createUploader({{instance.id}});
        });          
    </script>
</head>
<body>    
    <div id="file-uploader">        
    </div>   
</body>
</html>
于 2013-06-30T05:58:18.473 回答