• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

182
Vistas
cómo enviar argumentos múltiples a plantillas personalizadas de Django desde el código JS dentro de la plantilla HTML

Estoy tratando de usar una etiqueta de plantilla personalizada para ejecutar una función específica en una variable que obtengo en JS dentro de mi plantilla HTML.

Aquí hay una muestra de lo que probé:

etiqueta de plantilla de Python

 def calculate_km(value, arg): """ Calculate the km from the source """ args_list = eval(arg) layer_id = value return f"layer_id_is:{layer_id}, args_list:{args_list}"

entonces lo estoy usando dentro de mi bloque HTML js así:

 const args_data = "[" + kmlEvent.featureData.id + "," + kmlEvent.latLng.lat + "," + kmlEvent.latLng.lng + "]"; console.log(`{{single_layer.id|calculate_km: ${args_data} }}`);

El problema aquí es agregar la variable JS dentro de la etiqueta de la plantilla, como puede ver usando args_data dentro de la string que debería devolver la sintaxis para la Django template así que lo que se espera es que la línea console.log se represente de la siguiente manera:

 {{12|calculate_km:[12,Foo,123,456]}}

Pero el problema es que no lee el valor de la variable args_data y se representa como:

 {{12|calculate_km: ${args_data}}}

y por supuesto, eso devuelve un error que es:

 django.template.exceptions.TemplateSyntaxError: calculate_km requires 2 arguments, 1 provided

entonces parece que ni siquiera lee el valor de args_data

about 3 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La etiqueta de plantilla de Django se representa en el lado del servidor, antes de entregar la respuesta HTTP. Lo que el navegador recibe en la respuesta es solo HTML y JavaScript.

El JavaScript se ejecuta en el lado del cliente, después de que todas las etiquetas de plantilla de Django (y otros nodos) ya se hayan resuelto y representado.

Lamentablemente, no puede pasar argumentos de JavaScript a una etiqueta de plantilla de Django porque el orden de ejecución es incompatible. Deberá volver a escribir la etiqueta de su plantilla como una función de JavaScript. Dado que parece que su código está siendo activado por un evento (basado en los nombres de sus variables), es probable que no sea posible cambiar todo el código para ejecutarlo en el lado del servidor.

about 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda