Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

170
Visualizações
El formulario Dropzone no se manejó correctamente

Tengo una pequeña aplicación django: el usuario carga un archivo, el archivo se modifica en el lado del servidor y el archivo modificado se devuelve al usuario como descarga. Para proporcionar un buen formulario de carga de archivos de arrastrar y soltar, uso dropzone.js. El formulario contiene otros elementos de entrada, así que seguí este howto . Después de enviar el formulario, la vista Django devuelve un objeto HttpResponse:

 response = HttpResponse(f.read(), content_type="application/pdf") response['Content-Disposition'] = 'attachment; filename="%s"' % input_file

Mi problema es: si uso el formulario basado en dropzone, la respuesta no se muestra, es decir, el navegador no muestra un cuadro de diálogo de descarga.

Aquí está el ejemplo mínimo de mi archivo html:

 <form method="post" class="dropzone" action="/mysite/" enctype="multipart/form-data" id="myForm"> {% csrf_token %} <select name="selectpdf" size="1"> // filled by django magic </select> <p><button type="submit">Do it!</button></p> </form> <script type="text/javascript"> Dropzone.options.myForm = { // Prevents Dropzone from uploading dropped files immediately autoProcessQueue : false, forceFallback : false, init : function() { myDropzone = this; this.element.querySelector("button[type=submit]").addEventListener("click", function(e) { // Make sure that the form isn't actually being sent. e.preventDefault(); e.stopPropagation(); myDropzone.processQueue(); }); } }; </script>

Cuando uso un formulario HTML normal (es decir, sin class="dropzone" y usando un campo de carga de archivos estándar), todo funciona perfectamente. Además, si activo el modo alternativo de dropzones (que básicamente hace lo mismo), todo está bien. Por lo tanto, supongo que el problema no está relacionado con la parte de django.

Después de presionar el botón Enviar, observo que myDropzone.processQueue(); se ejecuta correctamente (porque el archivo se carga) y el archivo cargado se maneja correctamente en el lado del servidor (es decir, el archivo se modifica y se genera y devuelve la HttpResponse adecuada). Sin embargo, el cliente nunca lo ve. También observé que el formulario parece estar en un estado incorrecto, porque si presiono el botón de enviar nuevamente, no sucede nada.

Para mí, parece que falta alguna redirección final del lado del cliente basada en JavaScript, que se hace implícitamente cuando se usa el método HTML simple.

De acuerdo con el howto, puedo capturar ciertos eventos como

 this.on("success", function(files, response) { ... }

para redirigir al usuario. Pero, de hecho, no quiero redirigirlo, quiero el mismo comportamiento que con el método HTML simple (es decir, permanecer en el sitio, completar el formulario, proporcionar la descarga y poder presionar el botón Enviar nuevamente) .

¿Alguien puede ayudar?

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda