我有一个javascript静态文件,我想在其中指定一个指向非静态json文件的源url。下面的代码似乎不起作用(这里的根目录是django项目的根目录):
source: {url: "users/username1/nonstatic.json"}如果我显式地(非理想地)指定了一个绝对的静态json url,它就会起作用:
source: {url: "static/default_GCMS.json"}我想知道从静态文件(本例中为.js)调用非静态文件的正确方式是什么。
发布于 2017-07-18 18:43:40
因此,您希望从静态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>上面的代码有一个问题,您需要记住在包含js文件之前定义所需的urls。一种更结构化、更持久的解决方案是创建一个django-view,它的唯一目的是输出一个全局对象,该对象将包含您将从其他JS文件中使用的所有urls。因此,您的模板中将包含类似以下内容
<script src='{% url "my_url_creating_view" %}'></script>
<script src='the_js_file_that_will_use_the_url.js'></script>my_url_creating_view应该具有正确的内容类型(application/javascript),并且应该只返回如下所示的对象:
var g_URLS = {
djangoView1: {% url "django_view_1" %},
djangoView2: {% url "django_view_2" %}
}等
https://stackoverflow.com/questions/45163998
复制相似问题