python - 在块外部或内部编写脚本标签?
问题描述
请考虑以下代码。
<!--templates/home.html-->
{% extends 'base.html' %}
{% load static %}
{% block content %}
{% for post in object_list %}
<div class = 'post-entry'>
<h2><a href="{% url 'post_detail' post.pk %}">{{ post.title }}</h2>
<p>{{ post.body }}</p>
</div>
{% endfor %}
<script type = "text/javascript" src = "{% static 'js/test.js' %}"></script>
{% endblock content %}
和
<!--templates/home.html-->
{% extends 'base.html' %}
{% load static %}
{% block content %}
{% for post in object_list %}
<div class = 'post-entry'>
<h2><a href="{% url 'post_detail' post.pk %}">{{ post.title }}</h2>
<p>{{ post.body }}</p>
</div>
{% endfor %}
{% endblock content %}
<script type = "text/javascript" src = "{% static 'js/test.js' %}"></script>
第一个成功执行,但第二个没有。是否有必要从 django 模板块中加载外部静态文件,如果没有,那么为什么第二个代码不执行?
PS:我是django的新手。
为了清楚起见,我还在此处提供基本模板的代码。
<!--templates/base.html-->
{% load static %}
<html>
<head><title>Django Blog</title>
<link href = "{% static 'css/base.css' %}" rel = "stylesheet">
</head>
<body>
<header><h1><a href = "{% url 'home' %}">Django Blog</a></h1></header>
<div>
{% block content %}
{% endblock content %}
</div>
</body>
</html>
解决方案
第一个成功执行,但第二个没有。是否有必要从 django 模板块中加载外部静态文件,如果没有,那么为什么第二个代码不执行?
如果您覆盖基本模板,则可以说只能“填充块”。Django 应该在哪里写你在块之外写的东西?在文件的开头?在文件的末尾?中间某个地方?
Django 模板引擎中最强大的——因此也是最复杂的——部分是模板继承。模板继承允许您构建一个基本的“骨架”模板,该模板包含您网站的所有常见元素并定义子模板可以覆盖的块。
但是,您可以定义多个块。例如,通常在末尾添加一个块,您可以在其中添加一些额外的 JavaScript,例如:
<!--templates/base.html-->
{% load static %}
<html>
<head><title>Django Blog</title>
<link href="{% static 'css/base.css' %}" rel="stylesheet">
</head>
<body>
<header><h1><a href="{% url 'home' %}">Django Blog</a></h1></header>
<div>
{% block content %}
{% endblock content %}
</div>
{% block js %}
{% endblock %}
</body>
</html>
因此,您可以<script ...>
在页面底部编写部分,例如:
{% extends 'base.html' %}
{% load static %}
{% block content %}
{% for post in object_list %}
<div class='post-entry'>
<h2><a href="{% url 'post_detail' post.pk %}">{{ post.title }}</h2>
<p>{{ post.body }}</p>
</div>
{% endfor %}
{% endblock %}
{% block js %}
<script type="text/javascript" src="{% static 'js/test.js' %}"></script>
{% endblock %}
{% block ...%} ... %{ endblock %}
您当然可以在零件之外定义变量等。但是,如果您从基本模板继承,则外部呈现的所有内容都会被忽略。
推荐阅读
- postgresql - Dokku Postgres 导入/导出问题
- c# - 没有给出与 'Employee.Employee(string,string, int)' 的所需形式参数 'name' 相对应的参数
- c# - 如何从字典中获取元素并添加到数组中?
- python - 我可以在 PHP 中运行 Python 函数吗
- python - How to format to n decimal places in Python
- node.js - Microsoft Graph List outlookTask not returning immutable ID even if it's in preferred in header
- django - 在 /login/ 处获取 TypeError:authenticate() 得到了一个意外的关键字参数“用户名”
- java - 在java中为报表创建sql查询
- python - 在另一个包的模块中导入包?
- sharepoint - createNewDiscussion/createNewDiscussionReply 通过来自外部 Angular SPA 的 SharePoint 讨论板中的 JSOM