Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

486
Vistas
Error de formas crujientes de Django: la entrada de imágenes múltiples no muestra diferentes nombres de archivo

Tengo un formulario crujiente con un campo de entrada de imagen que acepta varias imágenes:
images = forms.ImageField(widget=forms.FileInput(attrs={'class': 'form-control', 'multiple': True}), required=False)
El formulario funciona perfectamente bien y las imágenes se cargan y se pueden procesar en el backend.

Sin embargo, hay un error de interfaz extraño: por lo general, cuando selecciona varias imágenes para cargar en un campo de imagen crujiente, muestra todos los nombres de archivo de las imágenes seleccionadas como una lista en ese widget. Sin embargo, en mi caso, solo muestra el nombre de uno de los archivos, varias veces (para ser precisos: para cada archivo seleccionado, muestra el nombre de uno de los archivos una vez).
Por ejemplo, si selecciono tres archivos con nombres diferentes, uno de los cuales se llama 'kangaroo.png', el widget se ve así: Error de interfaz

Ahora he precisado el problema a este pequeño fragmento:

 <div class="custom-file "> <input type="file" name="images" class="form-control fileinput fileUpload form-control-file custom-file-input" multiple accept="image/*" id="id_images"> <label class="custom-file-label" for="id_images">Choose file</label> <script type="text/javascript" id="script-id_images"> document.getElementById("script-id_images").parentNode.querySelector('.custom-file-input').onchange = function (e){ var filenames = ""; for (let i=0;i<e.target.files.length;i++){ filenames+=(i>0?", ":"")+e.target.files[0].name; } e.target.parentNode.querySelector('.custom-file-label').innerHTML=filenames; } </script> </div>

El problema radica en la línea que dice: filenames+=(i>0?", ":"")+e.target.files[0].name; .
Debería ser claramente: filenames+=(i>0?", ":"")+e.target.files[i].name; .

Y, por supuesto, cuando investigué el código de los formularios crujientes, encontré el código correcto usando i como índice en lugar de 0. (La ruta a ese archivo es crispy_forms\templates\bootstrap4\layout\field_file.html en caso de que quiera echar un vistazo)

Así que ahora me pregunto, ¿qué pasó? ¿Dónde cambió la i a un 0? ¿Se trata de un error con formularios crujientes que debe informarse o el problema podría estar dentro de mi proyecto?

Editar: Este fue un error en las versiones de django anteriores a 1.9.1 que se corrigió en este compromiso .

about 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda