gpt4 book ai didi

django - 使用 Django 的 Angular JS 部分和静态文件

转载 作者:行者123 更新时间:2023-12-01 14:37:39 24 4
gpt4 key购买 nike

我一直在网上搜索这个特定问题的答案,很惊讶我没有找到太多关于这个问题的答案。我有一个 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 可以命中,games/math 就可以工作。但我不希望人们能够直接访问它,它会变得困惑(这是一个单独的问题),无论如何我宁愿在这里使用部分。 'secretgame' 有效,但该 templateUrl 在生产中不起作用。基本上是因为 S3 存储桶取代了“静态”。

一个解决方案是将我通常使用的 STATIC_URL 设置粘贴到全局 javascript 变量中,然后使用类似 templateUrl: staticUrl + js/games/partials/secretgame.html 的东西,但那不是看起来不错。

有没有人处理过这个问题?如果我还应该提供其他信息,请告诉我。

澄清一下:使用部分,使用 {% verbatim %} 将 Django 模板与 AngularJS 分开是行不通的。这适用于您从 Django URL 加载的内容,但不适用于部分内容,它完全由 AngularJS 使用。

最佳答案

我以前在使用django和angular时遇到过这类问题。正如您所说,您可以使用 JS 全局变量并在前面添加,但这很草率。

虽然它遵循相同的思路,但我认为更简洁的解决方案是在初始页面加载时使用您使用 django 创建的辅助函数。

而不是写 templateUrl: 'static/js/....' 你可以写 templateUrl: staticUrl('js/...') 或者甚至进一步使用 jsUrl、cssUrl 等。

关于django - 使用 Django 的 Angular JS 部分和静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24877440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com