【发布时间】:2018-05-28 12:13:24
【问题描述】:
我有一个使用 AngularJS 和一堆 JavaScript 和模板文件的 django 应用程序。
在我的 django 模板中,我可以使用 {% static %} 标记来正确引用这些文件,如下所示:
<script src="{% static "angular/myapp.app.js" %}"></script>
但是,外部文件本身显然是do not get resolved through django's templating framework,所以这不是一个选项。所以人们最常做的就是硬编码那里的静态路径:
$routeProvider.when('/', {
// this works but is not ideal
templateUrl: '/static/pages/some-angular-template.html',
})
我已经看到将STATIC_URL 加载到某个地方的javascript 并使用它来构造引用的建议。像这样的:
Django 模板:
var STATIC_URL = {{ STATIC_URL }};
function getStaticUrl(templatePath) {
return STATIC_URL + templatePath;
}
外部 JS:
$routeProvider.when('/', {
templateUrl: getStaticUrl('/pages/some-angular-template.html'),
})
这有点好,但仍然不完美,因为它只处理基本路径。如果您想使用 ManifestStaticFilesStorage 之类的东西(我会这样做),那么您仍然无法获得正确的文件分辨率。
这个问题有什么好的解决办法吗?我正在考虑的选项:
- 将所有必要的 URL 引导到 django 模板内的 JS 变量中
- 使用
data标签(同样通过django模板)将url存储在一些隐藏的HTML标记中 - 创建一个 API 来获取 URL(这看起来很疯狂,而且在性能方面会很糟糕)。
只是想知道是否有解决此问题的标准做法或库?我已经多次遇到这个问题,但从未找到满意的解决方案。
【问题讨论】:
-
如果使用清单存储,这尤其棘手
标签: angularjs django django-staticfiles