Javascript Django从静态文件访问非静态文件

Javascript Django从静态文件访问非静态文件,javascript,json,django,django-templates,django-staticfiles,Javascript,Json,Django,Django Templates,Django Staticfiles,我有一个javascript静态文件,我想在其中指定非静态json文件的源url。以下选项似乎不起作用(此处的根目录是django项目的根目录): 如果我显式地(非理想地)指定一个绝对静态json url,它就会工作: source: {url: "static/default_GCMS.json"} 我想知道从静态文件(.js)调用非静态文件的正确方法是什么 所以您希望从静态JS文件调用django视图。这是一个相当常见的问题——要解决它,您需要将django模板逻辑与静态JS混合匹配 一个

我有一个javascript静态文件,我想在其中指定非静态json文件的源url。以下选项似乎不起作用(此处的根目录是django项目的根目录):

如果我显式地(非理想地)指定一个绝对静态json url,它就会工作:

source: {url: "static/default_GCMS.json"}

我想知道从静态文件(.js)调用非静态文件的正确方法是什么

所以您希望从静态JS文件调用django视图。这是一个相当常见的问题——要解决它,您需要将django模板逻辑与静态JS混合匹配

一个简单的解决方案是在包含静态JS文件之前,将要调用的视图的URL分配给django模板中的全局JS变量,然后使用该变量。那么,您的django模板应该是这样的

<script>
  var g_djangoViewUrl = '{% url "my_django_view_url %}';
  // Notice that g_djangoViewUrl is global (assigned to your window object) so will be visible from other JS files
</script>
<script src='the_js_file_that_will_use_the_url.js'></script>

etc

因此,在我的主视图中,我需要将源文件发送到另一个url创建视图,该视图返回全局变量,然后发送js文件。对的这非常适合动态创建URL。问题是,我的url创建视图将生成一个类似于我在调试期间明确说明的url(users/username1/nonstatic.json),而我的静态文件似乎无法读取。您认为该视图将生成url是什么意思?此外,如果URL存在,那么静态文件也应该能够读取它。但是,请确保使用绝对URL而不是相对URL。要检查从应用程序访问哪些URL,请使用Chrome开发工具网络选项卡并检查红色404错误。
<script>
  var g_djangoViewUrl = '{% url "my_django_view_url %}';
  // Notice that g_djangoViewUrl is global (assigned to your window object) so will be visible from other JS files
</script>
<script src='the_js_file_that_will_use_the_url.js'></script>
<script src='{% url "my_url_creating_view" %}'></script>
<script src='the_js_file_that_will_use_the_url.js'></script>
var g_URLS = {
    djangoView1: {% url "django_view_1" %},
    djangoView2: {% url "django_view_2" %}
}