AlMcLean
Cuando renderizo una página usando el renderizador de plantillas de Django, puedo pasar una variable de diccionario que contiene varios valores para manipularlos en la página usando {{ myVar }}
.
¿Hay alguna forma de acceder a la misma variable en Javascript, <script></script>
(quizás usando el DOM, no sé cómo Django hace que las variables sean accesibles)? Quiero poder buscar detalles usando una búsqueda AJAX basada en los valores contenidos en las variables pasadas.
-
Sin embargo, tenga en cuenta que, según esta solución, es vulnerable a los ataques de inyección.
– Casebash
13 de junio de 2010 a las 6:13
-
@Casebash: Para tales ocasiones
escapejs
el filtro existe:escapejs('<>') -> u'\\u003C\\u003E'
– Tomasz Zieliński
23 de agosto de 2011 a las 10:54
-
Solo para agregar a esto como referencia: si “someDjangoVariable” resulta ser JSON, asegúrese de usar {{ someDjangoVariable|safe }} para eliminar el "
– Marca
7 febrero 2012 a las 14:39
-
¿Qué pasa si el javascript está escrito en un archivo diferente?
– el_espíritu_desconocido
15 de noviembre de 2016 a las 7:05
-
10 años después, Django ha introducido un filtro de plantilla incorporado solo para esto: docs.djangoproject.com/en/2.1/ref/templates/incorporados/…
– Jon Sacas
19 de enero de 2019 a las 19:55
-
Eso es bueno porque permite copiar solo algunas variables de entrada de la plantilla de Django a Javascript y el código del lado del servidor no necesita saber qué estructuras de datos debe usar Javascript y, por lo tanto, convertirlas a JSON antes de representar la plantilla de Django. Use esto o siempre copie todas las variables de Django a Javascript.
– Alan Evangelista
20 de noviembre de 2014 a las 19:22
-
Pero nota: stackoverflow.com/questions/23752156/…
– Ciro Santilli OurBigBook.com
3 de junio de 2016 a las 14:12
-
@JorgeOrpinel No, no es lo mismo.
safe
solo marca el valor como seguro, sin la conversión y el escape adecuados.– Administrador de Yaroslav
30 de mayo de 2017 a las 10:52
-
¿Cómo muestra la variable en la plantilla de django?
– kbdev
14/06/2017 a las 17:33
-
@Sandi cuando lo publiqué, era común tener un widget en un archivo JS separado e inicializarlo en el código fuente de la página. Así que digamos que declaras
function myWidget(config) { /* implementation */ }
en el archivo JS y luego lo usa en algunas páginas usandomyWidget({{ pythonConfig | js }})
. Pero no puede usarlo en archivos JS (como notó), por lo que tiene sus limitaciones.– Administrador de Yaroslav
21 de diciembre de 2017 a las 16:55
-
ten cuidado sin embargo. dependiendo de cómo use la variable/formulario, el usuario puede ingresar lo que quiera.
– AndyL
2 mayo 2012 a las 23:24
-
También es posible que desee configurar su campo de entrada en solo lectura (vea este enlace w3schools.com/tags/att_input_readonly.asp)
– nu everest
20 de diciembre de 2012 a las 13:53
-
Si es algo que no alterará una base de datos o no se enviará a una consulta de base de datos, estaría bien. @AndyL
– James111
8 de febrero de 2016 a las 22:18
-
Chicos… los usuarios pueden hacer lo que quieran de todos modos. Los navegadores lo hacen tan fácil hoy en día con un inspector DOM completo y herramientas de depuración. Moraleja de la historia: haga TODOS sus datos de validación en el servidor.
– usuario2867288
18 de febrero de 2017 a las 7:14
-
¿Alguien puede decirme cómo accedería a esa variable en un archivo JavaScript externo?
– Ahtisham
21 de diciembre de 2017 a las 12:54
-
Esto realmente funciona sin ningún script complicado de terceros.
– Darth Vader
19 de noviembre de 2021 a las 2:24
-
Esto realmente funciona sin ningún script complicado de terceros.
– Darth Vader
19 de noviembre de 2021 a las 2:24
-
Esta debería ser la respuesta. Esto funciona perfectamente sin que se escape ninguna cotización manual.
– derteufelqwe
24 de diciembre de 2020 a las 23:16