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

459
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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