{{ post.title }}
{{ post.body }}
{% endfor %} {% 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>
{% endfor %}
{% endblock content %}
<script type = "text/javascript" src = "{% static 'js/test.js' %}"></script>
The first one executes successfully but the second one does not. Is it necessary to load an external static file from inside a django template block 和if not then why does the second code not execute?
PS:我是django的新手。
为了清楚起见,我也在此提供基本模板的代码。
<!--templates/base.html-->
{% load static %}
<head><title>Django Blog</title>
<link href = "{% static 'css/base.css' %}" rel = "stylesheet">
</head>
<header><h1><a href = "{% url 'home' %}">Django Blog</a></h1></header>
{% block content %}
{% endblock content %}
</body>
</html>
1 个评论如果你{% extends ... %}
一个基础模板,{% block ... %}
以外的所有东西(除了{% load ... %}
,等等)都不会被添加到模板中,因为,它没有{% block ... %}
可以放进去。Atif Farooq发布于 2019-08-112 个回答Willem Van Onsem发布于 2019-08-11已采纳0 人赞同
第一段可以成功执行,但第二段却不能。是否有必要从django模板块内加载一个外部静态文件,如果没有,为什么第二段代码不能执行?
如果你覆盖了一个基本的模板,你只能 "填充块",可以这么说。Django应该把你写在区块之外的东西写在哪里?在文件的开头?在文件的末尾?还是在两者之间的某个地方?
Django的模板引擎最强大的部分--也是最复杂的部分--是模板继承。模板继承允许你建立一个基本的 "骨架 "模板,它包含了你的网站的所有公共元素和定义了子模板可以覆盖的块.
然而,你可以定义multiple块。例如,常见的是在结尾处添加一个块,你可以选择添加一些额外的JavaScript,比如。
<!--templates/base.html-->
{% load static %}
<head><title>Django Blog</title>
<link href="{% static 'css/base.css' %}" rel="stylesheet">
</head>
<header><h1><a href="{% url 'home' %}">Django Blog</a></h1></header>
{% block content %}
{% endblock content %}
{% 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>
{% endfor %}
{% endblock %}
{% block js %}
<script type="text/javascript" src="{% static 'js/test.js' %}"></script>
{% endblock %}
当然,你可以在{% block ...%} ... %{ endblock %}
部分之外定义变量等。但所有的东西都是rendered如果你从一个基础模板继承,外面的内容会被忽略。
Djaballah Mohammed DJEDID发布于 2019-08-110 人赞同
对于第二个脚本,你使用django命令{% static 'js/test.js' %}
来指定script element
的src
属性,为了使其发挥作用,它需要在django块中。