我想在扩展base_generic模板的模板中加载一个javascript文件。我使用通用listView来呈现模板。
因为我不能使用" {%url%}" tamplate标签内的" {%block%}"标签我将链接硬编码如下:
<script src="static/js/search.js">
不幸的是,该文件不起作用,我收到一条消息:&#34;语法错误:期望表达式,得到&#39;&lt;&#39; &#34;
我想这是因为我的视图试图将模板呈现为html(我是对的吗?) - 我的假设基于这篇文章:SyntaxError: expected expression, got '<'
所以我的问题是:如何在扩展另一个模板的模板中加载静态文件。
编辑:
这是我的模板:
{% extends "base_generic.html" %}
{% block content %}
{% if search_flag %}
SEARCHFLAG ON
{% else %}
<h2 class="myh"> Książki: </h2>
{% if book_list %}
<script>
var lista=[];
{% for book in book_list %}
var title="{{book.title}}";
var authors=[];
{% for author in book.author.all %};
var aut="{{author.last_name}}";
authors.push(aut);
{% endfor %}
var authorsStr=authors.join('; ');
var book=[title, authorsStr]
lista.push(book);
{% endfor %}
console.log("created list of books and authors - name: lista")
</script>
{% else %}
<p>W katalogu nie ma książek</p>
{% endif %}
{% endif %}
<script src="static/js/search.js">
</script>
{% endblock %}
答案 0 :(得分:2)
您可以在{% url "" %}
中使用block
。要使用static
,请确保在需要时直接在{% load static %}
模板标记后添加extends
。然后你可以:
<script src="{% static 'js/search.js' %}">
答案 1 :(得分:1)
您不必使用{% url %}
标记来获取statis文件的路径,只需将其写在模板文件的顶部:
{% load staticfiles %}
之后,yuo可以通过以下结构访问您的静态文件:
<script src="{% static 'js/search.js' %}">
在documentation中阅读更多内容。
如果要扩展基本模板,则必须为脚本添加块并将其扩展到另一个模板
base.html文件:
{% block scripts %}
{% endblock %}
的index.html:
{% block script %}
<script src="{% static 'js/search.js' %}">
{% endblock %}
希望这会有所帮助。