2012-11-28 109 views
0

我想在django中實現代碼。我的代碼正常工作正常。但是,當我嘗試在Django中使用。它似乎JavaScript不工作。爲什麼它不在Django中工作?我如何運行使用JavaScript的HTML頁面? *這個html頁面位於我的模板文件夾中,並且在這個文件夾中,我也有一個像scripts/這樣的文件夾。django javascript代碼沒有運行,但它正在運行

回答

1

* HTML頁面住在我的模板文件夾,這個文件夾中,我也像文件夾腳本/ spryMap-2.js

你不應該把你靜態文件(例如spryMap-2 .js)在您的模板文件夾中。它應該放在你的靜態文件文件夾中。然後,你的東西加載這樣的腳本

<script type="text/javascript" src="{{ STATIC_URL }}scripts/spryMap-2.js"></script> 

更新:我不知道爲什麼我的答案下來投了反對票。我已經擴展了我的答案,以提供更詳細的修復靜態文件的說明。

問題是你的靜態文件沒有被正確的服務 - 因此當你試圖直接訪問js文件時,404。正如我上面提到的,templates文件夾不適合靜態文件。您應該配置您的STATIC_ROOTSTATIC_URL設置。例如

#Make this the path to the folder where you will keep your static files 
STATIC_ROOT = '/path/to/your/project/static' 
#The absolute or relative URL which will serve your static files 
STATIC_URL = '/static/' #translates to http://localhost:8000/static/, for example 

,並獲得Django開發服務器,以滿足您的靜態文件,你需要在你的urls.py以下

from django.contrib.staticfiles.urls import staticfiles_urlpatterns 

# ... the rest of your URLconf goes here ... 

urlpatterns += staticfiles_urlpatterns() 
+0

我必須這樣做嗎?我的意思是它應該不使用靜態url,因爲.js文件仍然可以在同一個文件夾中訪問。沒有在模板文件夾中運行的原因是什麼? –

+0

基本上,我相信你的spryMap-2.js文件沒有被提供,因爲服務器(例如'manage.py runserver')不知道你的靜態文件位於模板文件夾中。 django開發服務器需要在設置中正確配置「STATIC_ROOT」和「STATIC_URL」,並且需要您的spryMap-2.js在正確的文件夾中。 – Enrico

+0

我沒有STATIC_ROOT ='',我的意思是空的,你認爲這是我的代碼不工作的原因? –

0

我只是檢查這個代碼,它似乎是工作的罰款,也許嘗試檢查腳本源路徑標記。我用

<script src="{{ STATIC_URL }}assets/js/spryMap-2.js"></script> 

,而不是

<script type="text/javascript" src="scripts/spryMap-2.js"></script> 

和我得到了連接輸出,可拖動: Attached Output for the above problem

櫃面您正在使用Django確保您提到在設置文件的正確路徑爲靜態路徑,並把你的sprymap.js文件到該位置,我想這將排序問題。

+0

嘗試將.js文件放入靜態文件夾,然後嘗試修改settings.py文件以識別靜態根目錄,這在我的情況下是這樣的。 import os PROJECT_ROOT = os.path.abspath(os.path.dirname(__ name__)) STATIC_ROOT = os.path.join(PROJECT_ROOT,'project/static') – Sirius