Python 什么';Django中模板包含和静态包含的区别是什么?
我现在正在努力学习Django,并且正在努力确保我没有做任何愚蠢的事情 我正在使我的网页更加模块化,因为我正在删除模板(base.html)中的硬编码值。这样做,我试图将硬编码的CDN引用(jquery、bootstrap等)转换为可以包含在每个网页中的模块化部分。这样做将允许我在将来更改单个文件,而不是被迫进入每个网页进行更改 然而,我有点困惑。我试图确定将它们复制到html文件并使用Django的Python 什么';Django中模板包含和静态包含的区别是什么?,python,django,Python,Django,我现在正在努力学习Django,并且正在努力确保我没有做任何愚蠢的事情 我正在使我的网页更加模块化,因为我正在删除模板(base.html)中的硬编码值。这样做,我试图将硬编码的CDN引用(jquery、bootstrap等)转换为可以包含在每个网页中的模块化部分。这样做将允许我在将来更改单个文件,而不是被迫进入每个网页进行更改 然而,我有点困惑。我试图确定将它们复制到html文件并使用Django的{%include'%}模板标记直接包含cdn部分是否有意义,或者使用Django的静态包含是否
{%include'%}
模板标记直接包含cdn部分是否有意义,或者使用Django的静态包含是否更合适
那么最好的路线是什么呢?它似乎将是非常容易使用的模板包括一切静态在所有诚实。为什么不使用它来包含javascript或css
网站通常需要提供额外的文件,如图像、JavaScript或CSS。在Django中,我们将这些文件称为“静态文件”
我们称它们为“静态”只是因为它们不是动态的,即这些文件的内容是相对固定的,无论是通过设计还是通过其固有特性(例如:像图像这样的二进制内容),因此不需要由我们的应用服务器处理
我们将它们与其他文件区分开来,因为建议在较低级别上提供这些静态文件,例如,使用nginx。这使我们能够按原样更快地提供这些文件,从而提高性能。它还允许轻松缓存
但是当使用CDN时,您会将此工作从您的服务器卸载到其他服务器
现在回到你的问题上来。您不必在每个模板中声明资源。通常,base.html
包含页面的底部,然后可以通过更具体的(子)模板扩展(读取:)
为了快速理解这一点,下面是一个示例:
base.html:
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="~~CDN HERE~~">
<script src="~~CDN HERE~~"></script>
</head>
<body>
{% block body %}{% endblock %}
</body>
</html>
注意我是如何使用静态for image的,它直接由nginx提供服务
理论上,您可以将CDN链接合并到一个文件中,然后将其包含在base.html
中,但这只会导致模块化,从而导致冗余的复杂性
如果您有任何问题,请告诉我
{% extends "app/base.html" %}
{% load static %}
{% block body %}
<h1>{{ page_title }}</h1>
<img src="{% static 'app/img/detective.png' %}" alt="detective" />
{{ page_content | safe }}
{% endblock %}
{% block css %}
<link rel="stylesheet" href="{% static 'app/css/article.css' %}">
{% endblock %}