Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

308
Visualizações
¿El método 'seguro' de la variable JS de la plantilla Django no pasa datos al archivo js personalizado?

Estoy tratando de pasar una clave de API de Google a mi archivo js personalizado en Django, la función es para una búsqueda de API de Autocompletar en Google Places, pero en este momento no funciona, si pongo la clave real directamente en la función .getScript, me gusta:

 https://maps.googleapis.com/maps/api/js?key=XXX&libraries=places"

entonces la función de búsqueda funciona, pero con la configuración actual también pretende ocultar la clave api, no funciona, obviamente me estoy perdiendo algo, ¿agradezco alguna idea?

configuración de Django:

 GOOGLE_API_KEY = "XXX"

base.html

 <script src="{% static 'js/google_places.js' %}"></script>

vistas.py

 {'google_api_key': settings.GOOGLE_API_KEY}

google_places.js

 $.getScript("https://maps.googleapis.com/maps/api/js?key=" + google_api_key + "&libraries=places") .done(function( script, textStatus ) { google.maps.event.addDomListener(window, "load", initAutoComplete) }) let autocomplete; function initAutoComplete(){ autocomplete = new google.maps.places.Autocomplete( document.getElementById('autocomplete'), { types: ['country', 'locality'], }) }

viajes.html

 {% extends 'base.html' %} {% load static %} <input id='autocomplete' placeholder='enter a place' type="text"> {% endblock content %} {% block js %} <script type="text/javascript"> var google_api_key = "{{google_api_key|safe}}"; </script> {% endblock js %}

también la variable google_api_key se pasa a travel.html , lo he comprobado y funciona bien.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Pruebe la etiqueta json_script como se describe en los documentos de Django https://docs.djangoproject.com/en/4.0/ref/templates/builtins/

en tu plantilla:

 {{ google_api_key|json_script:"google_api_key" }}

luego en js antes de querer usar google_api_key:

 const google_api_key = JSON.parse(document.getElementById("google_api_key").textContent);
about 4 years ago · Juan Pablo Isaza Relatório

0

Descubrí el problema que estaba teniendo, necesitaba poner la función de documento listo en mi archivo js personalizado, así que al final opté por el método json_script y esto es lo que tengo ahora:

travel.html (insertado en la parte html de la plantilla sobre el contenido del bloque final)

 {{ google_api_key|json_script:"google_api_key" }}

google_places.js

 $( document ).ready(function() { // const google_api_key = document.getElementById('google_api_key'); const google_api_key = JSON.parse(document.getElementById("google_api_key").textContent); $.getScript("https://maps.googleapis.com/maps/api/js?key=" + google_api_key + "&libraries=places") .done(function( script, textStatus ) { google.maps.event.addDomListener(window, "load", initAutoComplete) }) let autocomplete; function initAutoComplete(){ autocomplete = new google.maps.places.Autocomplete( document.getElementById('autocomplete'), { types: ['country', 'locality'], }) } });
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda