簡體   English   中英

在擴展其他模板的模板中加載靜態文件 - Django javascript

[英]load static file in a template that extends other template - Django javascript

我想在擴展我的 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 %}

您可以在block中使用{% url "" %} 要使用static ,請確保在需要時在extends模板標簽之后直接包含{% load static %} 那么你就可以:

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

您不使用{% url %}標簽來獲取靜態文件的路徑,只需將其寫在模板文件的頂部:

{% load staticfiles %}

之后,您可以通過以下結構訪問您的靜態文件:

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

文檔中閱讀更多內容。

如果你想擴展基本模板,你必須添加塊腳本並將其擴展到你的模板

基礎.html:

{% block scripts %}
{% endblock %}

索引.html:

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

希望這會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM