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

465
Vistas
Pasar un diccionario desde la vista de Django a una plantilla de Django

Estoy tratando de pasar el siguiente contexto de views.py a una plantilla de Django:

vistas.py:

 def home(request): context = { 'dict_1': {'key_1': ['val_11', 'val_12'], 'key_2': ['val_21', 'val_22']} } return render(request, 'app/home.html', context)

casa.html:

 <script type="text/javascript"> var java_dict = {{ dict_1 }}; console.log(java_dict); </script>

Esto arroja un error: error de sintaxis no detectado: token inesperado '&'

Al investigar, veo que el diccionario en javascript se lee de la siguiente manera:

 {&#39;key_1&#39;: [&#39;val_11&#39;, &#39;val_12&#39;], &#39;key_2&#39;: [&#39;val_21&#39;, &#39;val_22&#39;]}

lo que probablemente significa que el carácter de comillas (') se lee incorrectamente. ¿Cómo soluciono este problema?

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

0

Los datos de contexto que pasa a las plantillas de Django se escapan de forma predeterminada, por motivos de seguridad.

Si está seguro de que los datos están seguros, puede hacer esto:

vistas.py

 import json def home(request): # Use JSON dump so that it will be a data that can be loaded in javascript context = { 'dict_1': json.dumps({ 'key_1': ['val_11', 'val_12'], 'key_2': ['val_21', 'val_22'] }) } return render(request, 'app/home.html', context)

inicio.html

 <script type="text/javascript"> var java_dict = {{ dict_1| safe }}; // Actually solve your problem. Don't escape the data. console.log(java_dict); </script>
about 4 years ago · Juan Pablo Isaza Denunciar

0

De forma predeterminada, todos los valores en las plantillas de Django escapan de los caracteres HTML por motivos de seguridad. Si desea usar este diccionario en JavaScript, debe usar el filtro json_script . Por favor, lea los documentos para entender lo que está pasando.

Una solución a tu problema sería:

  1. Agregue la etiqueta de secuencia de comandos que contiene su dict a la plantilla

     {{ dict_1 |json_script:"ID_OF_NEW_SCRIPT_TAG" }}
  2. Cargue el valor dict en su etiqueta de secuencia de comandos (usaré el nombre que tenía en su ejemplo)

     var java_dict = JSON.parse(document.getElementById('ID_OF_NEW_SCRIPT_TAG').textContent); console.log(java_dict);

Reemplace ID_OF_NEW_SCRIPT_TAG con cualquier ID que tenga sentido para usted.

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