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

114
Views
Cómo excluir rutas del hashing con ManifestStaticFilesStorage

Estoy involucrado en una aplicación que usa ruido blanco para servir archivos estáticos. Está configurado para usar CompressedManifestStaticFilesStorage que, a su vez, usa ManifestStaticFilesStorage .

Por archivos estáticos, me refiero a los archivos estáticos que proporcionamos y bibliotecas como folletos de terceros.

La clase ManifestStaticFilesStorage , proporcionada por Django, cambiará el nombre de los archivos para incluir un hash. Por cachebusting. Filtra recursos y cambia referencias sin hash a archivos para incluir el hash.

Esto a su vez rompe una función en el folleto:

 _detectIconPath: function () { var el = DomUtil.create('div', 'leaflet-default-icon-path', document.body); var path = DomUtil.getStyle(el, 'background-image') || DomUtil.getStyle(el, 'backgroundImage'); // IE8 document.body.removeChild(el); return path.indexOf('url') === 0 ? path.replace(/^url\([\"\']?/, '').replace(/marker-icon\.png[\"\']?\)$/, '') : ''; }

El problema es que el valor de la path se parece a:

 url("https://example.org/static/path/leaflet/dist/images/marker-icon.2273e3d8ad92.png")

Como el nombre del archivo no coincide, el segundo reemplazo no hará nada. Esto a su vez devolverá:

 https://example.org/static/path/leaflet/dist/images/marker-icon.2273e3d8ad92.png")

Cuando el folleto intenta agregar un nombre de archivo a este "directorio", obtenemos:

 https://example.org/static/path/leaflet/dist/images/marker-icon.2273e3d8ad92.png")marker-icon.png

Lo cual obviamente está mal.

¿Entonces, cuál es la solución? Me han informado que no deberíamos tratar de codificar nombres de archivo de paquetes de terceros, podría haber otras fallas. Sin embargo, no veo ninguna opción para que ManifestStaticFilesStorage excluya ciertos directorios del hash.

Creé la siguiente clase para tratar de solucionar esto. Hago referencia a esta clase en la configuración en lugar de CompressedManifestStaticFilesStorage .

 class MyStorage(CompressedManifestStaticFilesStorage): """ This class overrides the built in class and turns off file name hashing for selected directories. """ def _nonhashed_name_func(self, name, hashed_files=None): name = posixpath.normpath(name) cleaned_name = self.clean_name(name) return cleaned_name def _url(self, hashed_name_func, name, force=False, hashed_files=None): split = name.split("/") if split[0] in ['bower_components', 'node_modules']: hashed_name_func = self._nonhashed_name_func return super()._url(hashed_name_func=hashed_name_func, name=name, force=force, hashed_files=hashed_files)

Esto funciona, sin embargo, parece una solución algo poco elegante. ¿Alguien aquí tiene mejores sugerencias?

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Encontré esta página que describe problemas similares, en el contexto de Angular2:

https://www.npmjs.com/package/@asymmetrik/angular2-leaflet#a-note-about-markers

En el caso específico del folleto, la solución parece ser anular la ruta del ícono predeterminado. Como estoy usando vue2-leaflet, esto se puede hacer usando:

 <v-icondefault :image-path="path"></v-icondefault>

Según el ejemplo proporcionado con el código fuente.

about 4 years ago · Santiago Trujillo Report

0

El proyecto Leaflet respalda la compatibilidad con leaflet-defaulticon como una solución oficial para este problema.

Recupere todas las opciones de íconos predeterminados de folletos de CSS, en particular, todas las URL de imágenes de íconos, para mejorar la compatibilidad con paquetes y marcos que modifican las URL en CSS. En particular para webpack (con cargadores de estilo, css, archivos y url), Rails Asset Pipeline y Django pipeline. Debería resolver todos los casos de uso vinculados al problema #4968 . (Fuente)

about 4 years ago · Santiago Trujillo 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!