2012-05-18 1 views
0

Я пытался получить django ajax uploader для работы в моем django application. Я, должно быть, мертв мозгом :(потому что я не мог заставить его работать, что было, по-видимому, легким делом, согласно многие пользователи кода.используя django ajax uploader in view и template

Я установил django ajax uploader и добавил его к установленной apps.I решили не использовать STATIC_URL с и вместо того, чтобы поместить css and js файлов в MEDIA_ROOT и использовать MEDIA_URL, чтобы служить им.

I также включили anonymous function в теги <script> в start.html, как упоминалось в step4 of the doc - изменение действия на {% 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 методом

views.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.Is дает 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 site.If кого-то может помочь мне с этим, будет очень благодарна

ответ

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 

Этого должно быть достаточно. (Не забудьте изменить html как пример в репо, да # file-upload работает сам по себе с jQuery.

0

Я работаю над загрузкой файла django-ajax также в настоящий момент.

Где файл-загрузчик является идентификатором для div, а не фактическим типом входного файла. Из того, что я прочитал в файлеuploader.js, этот скрипт создаст элемент загрузки файла для вас, хотя со стандартным стиль. Я не гуру js, но я считаю, что вы можете настроить его в файле fileuploader.js ??

В моей функции Js ниже я пытаюсь передать рк моего экземпляра в качестве параметра для Аякса, пытаясь добавить новый элемент, который является именем и значение в params: {..} и action: "{% url ajax_upload %}", является pointig к этому 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>