我在使用 Dajaxice 以及创建用于 ajax 的自定义 javascript 文件时遇到问题。当manage.py collectstatic
安装了 Dajaxice 运行时,它会创建一个自定义的 javascript 文件。这篇文章也提到了这个问题。在我的情况下运行:
python manage.py findstatic dajaxice/dajaxice.core.js
给出:
Found 'dajaxice/dajaxice.core.js' here:
/private/var/folders/dp/yw0xd2f52yg7qmt992s72_9r0000gn/T/tmpRWRAGT
在本地运行时。我遇到的问题是,当将它与 django-storages 配对并启动以从 Amazon S3 提供静态文件时,它会爆炸,因为该文件是引用绝对路径而不是相对路径创建的(我认为它的 boto 没有实现django-storages 不喜欢的东西)。错误如下所示:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
self.execute(*args, **options.__dict__)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
output = self.handle(*args, **options)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 371, in handle
return self.handle_noargs(**options)
File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 163, in handle_noargs
collected = self.collect()
File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 113, in collect
handler(path, prefixed_path, storage)
File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 290, in copy_file
source_path = source_storage.path(path)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/files/storage.py", line 82, in path
raise NotImplementedError("This backend doesn't support absolute paths.")
(在这种情况下,我在 Heroku 上进行部署,这就是为什么我不能手动将创建的文件复制到静态位置并引用它)。有没有解决的办法?我可以让 Dajaxice 将生成的文件放在相对路径位置吗?或者我可以通过强制 django-storages/boto 接受绝对路径来解决它吗?或者,如果所有其他方法都失败了,是否有一种简单的方法可以预先生成文件,而不是在我收集静态时卸载我的所有 S3 依赖项,复制文件并强制 Dajax 停止查找生成的文件?
任何帮助表示赞赏。