2013-05-02 21 views
5

Bir projede django-ajax-uploader uyguluyorum, ancak şu anda 3.5.0'ın altında olan en son sürüm olan superuploader'ı kullanmak istiyorum. dokümantasyon ben csrf_token göndermek için yapmanız gereken tek şey customHeaders sözlüğe içine koyuyor söylediği gibi:django-ajax-uploader, csrf_token, ince yükleyici ile nasıl gönderilir 3.5.0

İşte

If you want to use the latest version of Fine Uploader, as valum's file-uploader is now called, instead of the one bundled with django-ajax-uploader, you can do so by replacing the params arguments in the above template with the following customHeaders:

customHeaders: { 'X-CSRFToken': '{{ csrf_token }}', },

benim tam kod edilir: benim views.py yılında

...  
     <h1>qq-file-uploader</h1> 
     <div id="upload-button" class="btn btn-primary"><i class="icon icon-cloud-upload icon-white"></i> Selecciona un archivo</div> 
     <div id="file-upload"></div> 
    </form> 
{% endblock %} 

{% block styles %} 
    <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}js/libs/jquery.fineuploader-3.5.0/fineuploader-3.5.0.css"/> 
{% endblock %} 

{% block javascript %} 
    <script type="text/javascript" src="{{ STATIC_URL }}js/libs/jquery.fineuploader-3.5.0/jquery.fineuploader-3.5.0.min.js"></script> 
    <script type="text/javascript"> 
     $(function(){ 
      $('div#file-upload').fineUploader({ 
       customHeaders: { 
        'X-CSRFToken': '{{ csrf_token }}' 
       }, 
       request: { 
        endpoint: '{% url 'documents:qq_file_uploader' %}' 
       }, 
       button: $('div#upload-button'), 
       multiple: false, 
      }); 
     }); 
    </script> 
{% endblock %} 

Ben: qq_file_uploader = AjaxFileUploader()

Ve her zaman bir 403 hata var kesit a içinde herhangi bir dosya yüklemeye çalışırken: Eğer hiç alıntı yönergeleri takip etmedi gibi CSRF verification failed. Request aborted.

cevap

3

belirteci ayarlamak için request.params kullanabilir ve POST üzerinden gönderdi. Haklısın

... 
request: { 
    endpoint: '{% url 'documents:qq_file_uploader' %}', 
    params: { 
     'csrfmiddlewaretoken': '{{ csrf_token }}' 
    } 
}, 
... 
+1

Bunu yaptım, şu anda çalışıyor, bana yardım ettiğin için teşekkürler, sen en iyi –

+0

"params" yanlış. Ray'ın cevabı gibi "customHeaders". – Joel

2

görünüyor. Özel başlıkların doğru kullanımı, İnce Yükleyici belgelerinde de açıklanmıştır.

tamamen sizin customFields özelliğini çıkarın ve okumak için request özelliğini değiştirin:

request: { 
    endpoint: '{% url 'documents:qq_file_uploader' %}' 
    customHeaders: { 
     X-CSRFToken': '{{ csrf_token }}' 
    } 
} 
+0

, sadece test customfields kullanmış ve üzgün, burada soru göndermeden önce customHeaders için tekrar değiştirmek kaçırdı. Neyse, customHeaders –

+0

ile değiştirilmiş kodunuzu gösterme. Ayrıca, ne tür sorun giderme yaptınız? Ham talebi incelediğinizde ne gördünüz? Jeton doğru muydu? Bu başlık sunucu tarafını gerçekten ayrıştırıyor musunuz? "çalışmıyor" yeterli bilgi değildir. –

+1

Şimdi 'csrfmiddlewaretoken' öğesini request.params içine gönderiyorum ve dosya doğru bir şekilde yükleniyor, sorun token göndermiyordu. Ayrıca 'filename = request.GET ['qqfile']' '' '' 'filename = request.FILES.get ('qqfile') 'adının' –

İlgili konular