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

180
Vistas
No se puede abrir el enlace que contiene caracteres especiales

Tengo la aplicación Django que pruebo en mi PC local y luego, cuando agrego algo nuevo, cargo los cambios en el servidor virtual de mi empresa. Tengo un problema con los enlaces a los archivos. A continuación se muestra el código de los enlaces a los archivos adjuntos (tanto mi local como el servidor tienen el mismo código):

 <p class="article-content mt-2 mb-1"><strong>Attachment: </strong><a href="{{post.file_close.url}}">{{post.file_close.name}}</a></p>

Si subo el archivo cars.png todo funciona bien en ambas versiones. Esto funciona sin importar la extensión, pdf, excel, imagen, etc. El problema es que si subo el archivo carsčč.png falla solo en el lado del servidor, en mi PC funciona muy bien. Recibo el siguiente error en mi Django/debugg:

 Page not found (404) “C:\inetpub\files\PyWeb\media\PN_files\2022\03\06\cars” does not exist

La URL de la página de error es:

 http://hidden_part/media/PN_files/2022/03/06/carsčč.png

Pero cuando hago clic en copiar y pegar es así:

 http://hidden_part/media/PN_files/2022/03/06/cars%C4%8D%C4%8D.png

Como el enlace no está completo, se detuvo tan pronto como se encuentra con un carácter especial. Pero, el enlace que se muestra todavía contiene todas las letras, es PN_files/2022/03/06/carsčč.png Probado: miré la configuración regional, es lo mismo en ambas PC. ¿Hay algo más que pueda revisar o cambiar? ¿Quizás incluir algo en el enlace? Además, cuando busco manualmente el archivo, el nombre no está dañado, se guarda localmente como carsčč.png . Así que supongo que es solo el enlace, trate de obtener el archivo. Me di cuenta de que es por las letras diacríticas. En mi 'base.html' tengo meta charset="utf-8" . Django configurando LANGUAGE_CODE = 'hr-BA' .

Uso Bootstrap 4.0 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">

El servidor está alojado en Windows, IIS, .NET La configuración de globalización está establecida en utf-8.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En la línea <a href="{{post.file_close.url}}"> está llamando internamente al método url() de la clase de almacenamiento subyacente, que devuelve la URL incorrecta “C:\inetpub\files\PyWeb\media\PN_files\2022\03\06\cars” .

El problema principal está dentro de su clase de almacenamiento. Probablemente esté utilizando FileSystemStorage de django. Cada vez que guarda un archivo, la clase de almacenamiento llama a storage.get_valid_name , que devuelve un nombre que es adecuado para usar en el sistema de destino ( ref ). En este paso se reemplazan los caracteres especiales. El código proporcionado en Storage conserva solo los caracteres alfanuméricos, los puntos y los guiones bajos del nombre de archivo original, eliminando todo lo demás ( ref ). El código proporcionado en Storage conserva solo los caracteres alfanuméricos, los puntos y los guiones bajos del nombre de archivo original, eliminando todo lo demás. ).

Si desea cambiar este comportamiento, puede escribir su propia clase de almacenamiento personalizada y sobrescribir el método get_valid_name ( ref ).

about 4 years ago · Juan Pablo Isaza Denunciar
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