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

177
Views
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 answers
Answer question

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 Report
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!