我一直在网上搜索这个特定问题的答案,我很惊讶我在这个问题上找不到多少。我有一个Django网站,我正在重做使用Angular作为前端,Django作为后端,这似乎是一种常见的做法。但是,我发现的所有例子都没有解决生产中静态路径变化的问题。我有一个生产中的S3桶。因此,使用路径static/whatever/maybesomecss/oranimage
不适用于部分或尝试使用$ resource将一些数据存储在.json文件中。
以下是一些代码来说明我在说什么。
.state('math', {
url: '/math',
templateUrl: 'games/math',
controller: 'MathController'
})
.state('secretgame', {
url:'/secretgame',
templateUrl: 'static/js/games/Partials/secretgame.html',
controller: 'secretController'
})
在上面,如果有一个Django URL可以点击游戏/数学。但是我不希望人们能够直接进入它,它会搞砸(这是一个单独的问题),而且无论如何我宁愿在这里使用部分。 ' secretgame'工作,但该templateUrl不会在生产中工作。因为S3存储桶基本上取代了静态'静态。
一种解决方案是将我正常使用的STATIC_URL设置粘贴到全局javascript变量中,然后使用类似templateUrl: staticUrl + js/games/partials/secretgame.html
的内容,但这看起来并不好。
有没有人处理过这个问题?如果我还有其他信息,请告诉我。
只是为了澄清:对于部分,使用{%verbatim%}将Django模板与AngularJS分开是不可行的。对于你从Django URL加载的东西来说这很好,但不是部分的,这完全由AngularJS使用。
答案 0 :(得分:1)
在使用django和angular之前,我不得不处理这类问题。正如你所说,你可以使用JS全局而只是前置,但这很草率。
虽然它是一致的,但我认为更简洁的解决方案是使用您在初始页面加载时使用django创建的辅助函数。
您可以编写templateUrl: 'static/js/....'
或者甚至可以使用jsUrl,cssUrl等等进一步编写templateUrl: staticUrl('js/...')
,而不是编写{{1}}。
答案 1 :(得分:0)
这个GitHub项目似乎可以解决这个问题:
https://github.com/appliedsec/djangular
特别是,请查看此文件: https://github.com/appliedsec/djangular/blob/master/djangular/templates/djangular_module.js
将STATIC_URL
和MEDIA_URL
注入JavaScript。