在给出错误的设置中,Django-Compress with debug = false

时间:2012-07-16 12:04:26

标签: python django django-templates django-compressor

我在django面临一个奇怪的问题。我正在使用django-compress app。直到调试才是真的一切都好。当我执行debug = False时,我遇到内部服务器错误问题,如果是404,页面没有js和css,如果没有404.最糟糕的部分是,在控制台上我得到以下错误

  

UncompressableFileError:'css / default.css'不可通过   COMPRESS_URL('/ static /')并且无法压缩[16 / Jul / 2012   17:17:05]“GET /static/img/favicon.ico HTTP / 1.1”500 59

像这样,每个GET请求显示500个,可以通过/ static /

访问

所以现在没有获得js和css的理由很清楚。但是在404页面上出错的原因尚不清楚。

即使我尝试禁用和启用django-compress,但启用甚至普通页面显示404错误

请告诉我导致所有/静态/事物500错误的原因以及为什么404页面会导致内部服务器错误。

4 个答案:

答案 0 :(得分:5)

DEBUG = True Django提供静态文件时。这意味着它可以在每个Django应用程序的/static/目录中找到静态文件。反过来,这意味着django-compressor可以找到它需要压缩的每个静态文件。

DEBUG = False Django不再提供静态文件但它们应该由Web服务器提供服务时。它通过提供STATIC_ROOT目录中的所有静态文件(通常为/static/)来实现此目的。这意味着需要将Django应用程序中的所有静态文件放在那里。

可以使用collectstatic命令完成此操作(请参阅Django文档中的The staticfiles app)。运行该命令后,所有静态文件都应位于STATIC_ROOT中,并且django-compressor应该能够再次找到这些文件。这解决了使用静态文件得到的404错误,当django-compressor工作时,你将不再得到500错误。

答案 1 :(得分:5)

对于Django> = 1.5,如果您遇到此问题,请确保正确设置ALLOWED_HOSTS设置。没有这个设置会使Django Compressor落入UncompressableFileError

我知道我们是在2014年,这个问题有点陈旧;)但是我今天陷入了这个问题,我的具体案例的解决方案是那个,并没有解释它。

希望它可以帮助别人。

答案 2 :(得分:0)

您可以打开django电子邮件的功能。只需修改如下的setting.py:

DEBUG = False
ADMINS = (
    ('username', 'username@example.com'),
)
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_PORT = 587
EMAIL_USE_TLS = True

如果发生500,您将收到来自您的django的电子邮件。我希望这可以帮到你。

答案 3 :(得分:0)

这个问题也困扰着我。大多数解决方案都是关于设置ALLOWED_HOST。这些答案都不起作用。我有这个问题,因为没有仔细阅读文件。

所以,我们必须首先理解这一点。你为每个请求编译了所有资产是不现实的,对吧?因此,当您将应用程序部署到生产服务器时,以及关闭调试模式。你应该记住不要让情况发生。

根据该文件,我通过下面的代码来解决这个问题

COMPRESS_OFFLINE = True

每次部署我的应用程序时,都会运行此命令

python manage.py compress

对于弹性beanstalk,您可以使用以下命令:

container_commands:
  ...
  03_compress:
    command: "source /opt/python/run/venv/bin/activate && python manage.py compress"

这可以让您在不编译每个请求的所有资产的情况下进行脱机预编译。

参考:https://django-compressor.readthedocs.io/en/latest/scenarios/