首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django从静态文件访问非静态文件

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

Stack Overflow用户
提问于 2017-07-18 18:23:29
回答 1查看 369关注 0票数 0

我有一个javascript静态文件,我想在其中指定一个指向非静态json文件的源url。下面的代码似乎不起作用(这里的根目录是django项目的根目录):

代码语言:javascript
复制
source: {url: "users/username1/nonstatic.json"}

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

代码语言:javascript
复制
source: {url: "static/default_GCMS.json"}

我想知道从静态文件(本例中为.js)调用非静态文件的正确方式是什么。

EN

回答 1

Stack Overflow用户

发布于 2017-07-18 18:43:40

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

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

代码语言:javascript
复制
<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。因此,您的模板中将包含类似以下内容

代码语言:javascript
复制
<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),并且应该只返回如下所示的对象:

代码语言:javascript
复制
var g_URLS = {
    djangoView1: {% url "django_view_1" %},
    djangoView2: {% url "django_view_2" %}
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45163998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档