在heroku上使用nested_inline时,在collectstatic期间发生Django错误

cxr*_*ers 2 django heroku static-files django-deployment

我正在尝试部署一个在heroku 实例上使用nested_inline 的django 应用程序。本地一切都运行良好,但我在收集静态期间在heroku服务器上遇到错误。

我按照heroku指南来让一个最小的django设置工作起来。然后我将“django-nested-inline”添加到我的requirements.txt中,将“nested_inline”添加到我的INSTALLED_APPS的末尾,并将“fromnested_inline.admin import NestedModelAdmin, NestedStackedInline”添加到我的admin.py中。

一切仍然在本地完美运行,没有任何问题。但是当我推送到heroku“git push heroku master”时,出现以下错误:

$ git push heroku master
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 670 bytes | 0 bytes/s, done.
Total 7 (delta 5), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Python app detected
remote: $ pip install -r requirements.txt
remote: Collecting django-nested-inline (from -r requirements.txt (line 6))
remote: Downloading django-nested-inline-0.3.6.tar.gz
remote: Installing collected packages: django-nested-inline
remote: Running setup.py install for django-nested-inline: started
remote: Running setup.py install for django-nested-inline: finished with status 'done'
remote: Successfully installed django-nested-inline-0.3.6
remote: 
remote: $ python manage.py collectstatic --noinput
remote: Post-processing 'admin/css/forms-nested.css' failed!
remote: Traceback (most recent call last):
remote: File "manage.py", line 10, in 
remote: execute_from_command_line(sys.argv)
remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/init.py", line 353, in execute_from_command_line
remote: utility.execute()
remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/init.py", line 345, in execute
remote: self.fetch_command(subcommand).run_from_argv(self.argv)
remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 348, in run_from_argv
remote: self.execute(args, *cmd_options)
remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 399, in execute
remote: output = self.handle(args, *options)
remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 176, in handle
remote: collected = self.collect()
remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 128, in collect
remote: raise processed
remote: whitenoise.django.MissingFileError: The file 'admin/img/nav-bg.gif' could not be found with .
remote: The CSS file 'admin/css/forms-nested.css' references a file which could not be found:
remote: admin/img/nav-bg.gif
remote: Please check the URL references in this CSS file, particularly any
remote: relative paths which might be pointing to the wrong location.
remote: 
remote: ! Error while running '$ python manage.py collectstatic --noinput'.
remote: See traceback above for details.
remote: 
remote: You may need to update application code to resolve this error.
remote: Or, you can disable collectstatic for this application:
remote: 
remote: $ heroku config:set DISABLE_COLLECTSTATIC=1
remote: 
remote: https://devcenter.heroku.com/articles/django-assets
Run Code Online (Sandbox Code Playgroud)

正如它所说,forms-nested.css文件引用了类似 的图像nav-bg.gif,据我所知,这些图像似乎不存在于任何地方。但这并不能阻止 django 和nested_inline 在本地完美工作。我不知道为什么它会在 Heroku 上崩溃?

小智 5

collectstatic 这是由于后处理方法可能发生的错误。

你可以做的是禁用 heroku 自动运行collectstatic命令:

heroku config:set DISABLE_COLLECTSTATIC=1

然后在禁用后处理方法的情况下运行collectstatic :

heroku run python manage.py collectstatic --no-post-process --noinput
Run Code Online (Sandbox Code Playgroud)

如果不是这种情况,则错误可能是您安装的nested_inline应用程序造成的。