【问题标题】:load static file in a template that extends other template - Django javascript在扩展其他模板的模板中加载静态文件 - Django javascript
【发布时间】:2017-12-22 18:59:22
【问题描述】:

我想在扩展我的 base_generic 模板的模板中加载一个 javascript 文件。我正在使用通用 listView 来呈现模板。

由于我不能在“{% block %}”标签内使用“{% url %}”模板标签,因此我将链接硬编码如下:

<script src="static/js/search.js">

不幸的是,该文件不起作用,我收到一条消息:“SyntaxError: expected expression, got '

我想这是因为我的视图试图将模板呈现为 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 %}

【问题讨论】:

  • 能把模板的代码贴出来吗??从上到下

标签: javascript python django templates


【解决方案1】:

您可以在block 中使用{% url "" %}。要使用static,请确保在需要时将{% load static %} 直接包含在extends 模板标签之后。然后你可以:

<script src="{% static 'js/search.js' %}">

【讨论】:

    【解决方案2】:

    您不要使用{% url %} 标签来获取静态文件的路径,只需将其写在模板文件的顶部即可:

    {% load staticfiles %}
    

    之后,您可以通过以下构造访问您的静态文件:

    <script src="{% static 'js/search.js' %}">
    

    documentation阅读更多内容。

    如果你想扩展基本模板,你必须添加块脚本并将其扩展到你的模板中

    base.html:

    {% block scripts %}
    {% endblock %}
    

    index.html:

    {% block script %}
        <script src="{% static 'js/search.js' %}">
    {% endblock %}
    

    希望这会有所帮助。

    【讨论】:

    • 你忘了scripts在块名=)
    • 是的 - 我使用了错误的模板标签。我将其标记为答案,非常感谢。但是我仍然不知道脚本的硬编码版本有什么问题。
    猜你喜欢
    • 2016-04-03
    • 1970-01-01
    • 2016-03-02
    • 2020-10-02
    • 2021-06-25
    • 1970-01-01
    • 2016-06-20
    • 2015-02-05
    • 1970-01-01
    相关资源
    最近更新 更多