2012-11-28 110 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