2015-06-03 43 views
1

我需要加载一个文件到一个函数,以便与电话自动成形库一起使用(Intl tel input) 当我在独立的html页面中尝试这个时,它工作正常,但是当我试图在django项目中做到这一点,文件只是不加载,我认为这是因为它没有找到它在路径中的位置。参考django javascript文件中的其他静态文件

main.js和utils.js都在我的项目的静态目录中,所以我不知道它为什么找不到utils.js文件。

main.js:

$(document).ready(function() { 
    $("#phoneNumber").intlTelInput({ 
     utilsScript: "utils.js" 
    }); 
}); 
+0

看看[this](https://github.com/tstone/django-uploadify/blob/master/uploadify/templates/uploadify/multi_file_upload.html)示例适用于您。 –

+0

你也可以尝试[这](http://stackoverflow.com/questions/11396457/how-to-make-static-url-work-in-external-js-files-django/11396683#11396683)选项。除了{%static'your_js_here.js'%}' –

+0

@DejaVu在第一个例子中,它如何知道'upload_path'和'uploadify_path'是什么? – rasen58

回答

1

我在我需要引用在JavaScript中的服务器端的路径是建立一个“应用程序”对象在我的最上面的模板,我可以在JavaScript中引用的情况下做些什么加载后的文件,通常使用require.js。

例子:

# base.html (upper-most template) 
<!DOCTYPE html>{% load static from staticfiles %} 
    <html> 
     <head>. . .</head> 
     <body> 
      . . . 
      <script> 
       var myApp = { 
        staticUrl: '{{ STATIC_URL }}' 
       } 
      </script> 
      <script src="{% static 'js/some-file.js' %}"></script> 
     </body> 
    </html> 

# some-file.js 

'use strict'; 

$(document).ready(function(){ 
    console.log(myApp.staticUrl); 
}); 
0

看看你的URL调度员(urls.py),看看那里的静态文件可能会被请求的实际路径。

例如,在我的一个项目中,JavaScript文件位于/static/js/

因此,例如,如果这是你的配置也是如此,你会怎么做 -

$(document).ready(function() { 
    $("#phoneNumber").intlTelInput({ 
     utilsScript: "/static/js/utils.js" 
    }); 
}); 

如果你想硬编码的URL这是。您可以在模板中或在模板引擎未处理的.js文件中执行此操作。

但是,如果你在一个模板中,我建议使用staticfiles app,特别是static模板标签,它作为帮助程序来构建文件路径。