添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
{% for post in object_list %}

{{ 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 ... %}可以放进去。
python
django
django-templates
Atif Farooq
Atif Farooq
发布于 2019-08-11
2 个回答
Willem Van Onsem
Willem Van Onsem
发布于 2019-08-11
已采纳
0 人赞同

第一段可以成功执行,但第二段却不能。是否有必要从django模板块内加载一个外部静态文件,如果没有,为什么第二段代码不能执行?

如果你覆盖了一个基本的模板,你只能 "填充块",可以这么说。Django应该把你写在区块之外的东西写在哪里?在文件的开头?在文件的末尾?还是在两者之间的某个地方?

如同在关于模板继承的文档 [Django-doc]:

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
Djaballah Mohammed DJEDID
发布于 2019-08-11
0 人赞同

对于第二个脚本,你使用django命令{% static 'js/test.js' %}来指定script elementsrc属性,为了使其发挥作用,它需要在django块中。