- 此问题在此处已有答案**:
What is the difference between client-side and server-side programming?(3个答案)
4天前关闭。
我如何在jinja模板中访问javascript变量?
示例:
<script>
let data_str = "video1";
let url = `{% url "renderVideo" args="${data_str}" %}`
</script
url
:
path("videoplay/<str:args>", views.videoplay, name="videoplay")
追溯:
Internal Server Error: /videoplay/${data_str}
我期待/videoplay/video1
,但它没有解析JavaScript变量。
1条答案
按热度按时间kulphzqa1#
TL; DR:否,Jinja和JS是独立的过程。
详细版本:
我认为您对模板(Jinja)的工作原理有误解。
Django Web应用程序有两个部分,后端(Django和Python)和前端(HTML/CSS/JS)。这扩展了客户端-服务器模型。当浏览器/客户端请求一个网页时,它会向后端/服务器发送请求。后端/服务器随后进行一些处理(在本例中是Python),并将结果以HTML/CSS/JS的形式发送回浏览器/客户端。客户端可以显示HTML,使用CSS对其进行样式化,并执行一些JS。后端/服务器和前端/客户端上的执行是完全分开的。
Jinja是一个模板引擎。还记得我说过后端做一些处理吗?嗯,就是这样。简单地说,Jinja接受一个通用的HTML/CSS/JS模板,并用一些Python变量填充空白。然后它将结果发送到浏览器。一旦HTML/CSS/JS到达浏览器,它就显示HTML,用CSS样式化它,然后执行它得到的任何JS。
浏览器永远不会看到Jinja模板,因为它只得到"填充"版本。相反,Jinja不能访问JavaScript变量,因为JavaScript还没有执行。