2017-07-18 133 views
0

我想在擴展我的base_generic模板的模板中加載JavaScript文件。我正在使用通用listView來呈現模板。在擴展其他模板的模板中加載靜態文件 - Django javascript

既然不能使用 「{%URL%}」 裏面tamplate標籤 「{%塊%}」 標籤我硬編碼的鏈接如下:

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

不幸的是,文件不不工作,我得到一個消息:「SyntaxError:預期的表達式,得到'<''

我想這是因爲我的觀點試圖呈現模板爲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

你可以發佈模板的代碼?從頂部到底部 – Exprator

回答

1

你沒有使用{% 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 %} 

希望這會有所幫助。

+0

您忘記了塊名稱中的'scripts' = –

+0

是的 - 我使用了錯誤的模板標籤。我將其標記爲答案,非常感謝。但是我仍然不知道腳本的硬編碼版本有什麼問題。 – McCzajnik

1

您可以在block使用{% url "" %}。要使用static,確保在需要時在extends模板標籤後面直接包含{% load static %}。然後,你可以:

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