Django 基础模板文件

Posted

技术标签:

【中文标题】Django 基础模板文件【英文标题】:Django base template files 【发布时间】:2014-06-09 12:23:27 【问题描述】:

我想问一个关于 django 基本模板的问题。它们究竟是如何工作的……我是什么意思。

我有一个基础文件,可以说它有一个静态内容和一个在扩展基础文件的模板中更改的块内容。

base.html

<html>
    <head>
        <script src="main.js"></script>
    </head>
    <body>
        <div class="side-nav">
            <!--static content here-->
        </div>
        <div class="content">
            % block "content"% %endblock%
        </div>
    </body>
</html>

我有三个扩展 base.html 的模板,例如 t1.html、t2.html 和 t3.html。它们都有一些 dom 元素,这些元素由 base.html 中导入的 main.js 文件编辑。我的问题如下。它是在我渲染模板并因此再次运行 main.js 时加载所有页面,还是仅渲染基本文件的“动态”内容?每次我加载扩展 base.html 的模板时,main.js 的代码会运行吗?

【问题讨论】:

【参考方案1】:

你基本上必须了解一个基本的区别:

在服务器端完成渲染

JavaScript 在 Clent 端工作

所以如果JS再次发送到客户端,它肯定会再次运行

您可以在此处阅读有关 Django 模板的更多信息:https://docs.djangoproject.com/en/1.5/topics/templates/

【讨论】:

是的,我知道,但我不知道为什么我的印象是 Django 只填充“空白”,即只呈现模板的不同“块”部分而不是所有开始时的模板(包括重新加载 javascript 文件) 希望,你的疑惑现在已经清楚了......模板继承像普通的类继承一样工作,一个子模板将拥有父模板的所有属性(即 HTML).. 和 % block %可以在子模板中被覆盖.. ;)【参考方案2】:

Django 首先将所有模板放在一起。完成后的页面将被发送到浏览器。您的 javascript 代码在浏览器中以整页形式运行。

【讨论】:

以上是关于Django 基础模板文件的主要内容,如果未能解决你的问题,请参考以下文章

Django-模板

Django框架之模板基础,静态文件配置

Django 模板继承:如何阻止基础模板重新加载?

Django模板继承和引用

django基础知识之模板继承:

来自 django 基本模板文件中 url 的变量