Javascript 为什么我能够动态使用django模板变量?

Javascript 为什么我能够动态使用django模板变量?,javascript,python,django,Javascript,Python,Django,我对drango模板的理解是,一切都发生在服务器端,然后由模板生成html。生成后,它只是html中的纯文本。但由于某些原因,我能够在javascript中动态使用django变量 下面是一个javascript示例: $("#smth").append("<li>{{djangoObject.0.id}}</li>"); $(“#smth”).append(“{{{djangobject.0.id}}”; 即使我把它放在一个事件处理程序中,也就是说,它肯定会在htm

我对drango模板的理解是,一切都发生在服务器端,然后由模板生成html。生成后,它只是html中的纯文本。但由于某些原因,我能够在javascript中动态使用django变量

下面是一个javascript示例:

$("#smth").append("<li>{{djangoObject.0.id}}</li>");
$(“#smth”).append(“
  • {{{djangobject.0.id}}
  • ”;
    即使我把它放在一个事件处理程序中,也就是说,它肯定会在html生成后被调用,它工作得很好


    最重要的是,为什么django将变量保存在客户端?

    此代码呈现为类似
    $(“#smth”)。append(
  • 123
  • 。当然,在生成html之后,这项工作不会有任何问题。

    它没有被客户端使用,只是直接呈现到Javascript字符串中。因此,例如,如果
    djangobject[0].id
    为12,则生成的代码如下所示

    $("#smth").append("<li>12</li>");
    
    $(“#smth”)。追加(“
  • 12
  • ”;

    很明显,这一切都会很顺利。但它不是动态的,请务必记住这一点——它不会在事件发生时获取
    id
    。它在模板呈现时获取它,这发生在HTML(和嵌入的Javascript)发送到客户端(您的浏览器)之前。

    Django模板也在服务器端运行,您的代码在服务器端运行。{{djangObject.0.id}}不是客户端变量。如果不是动态的,没有人会称之为“模板”:右键单击页面,要求查看源代码,然后搜索上面的javascript片段。@jsbueno谢谢,我已经找到了。在我写这个问题之前的漫长的一天里,我的大脑一片漆黑它是如何“呈现”的?如果它发生在呈现初始html之后,它将如何再次呈现?为了您的声誉,我将接受这一点,感谢您花时间回答。