Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

485
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!