python的debug设置_关于python:设置为debug时带debug = false的Django-Compress

我在django遇到一个奇怪的问题。 我正在使用django-compress应用程序。 直到调试正确,一切正常。 当我执行debug = False时,在404的情况下会遇到内部服务器错误问题,在没有404的情况下会遇到没有js和css的页面。最糟糕的是,在控制台上我遇到以下错误

UncompressableFileError: 'css/default.css' isn't accesible via

COMPRESS_URL ('/static/') and can't be compressed [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错误

请让我知道是什么导致所有/ static /事物出现500错误,以及为什么404页显示内部服务器错误。

您如何提供文件? 您的部署设置正确吗? 您是否收集了静态文件并将服务器指向根目录?

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

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

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

就像Simeon所说的那样。 这是一个完整的示例:stackoverflow.com/questions/10460028/

嘿@Simeon我已经运行了collectstatic命令,那么我也面临着同样的问题。 我不明白怎么了。 在这里发生的事情是我认为404页引发了一些内部服务器错误,并且出现错误,而且我不明白为什么它找不到静态文件

@ParitoshSingh:您是否配置了Web服务器以提供静态文件? 您需要执行此操作,然后运行collectstatic(已完成)。 然后,您可以查看静态文件。

@SimeonVisser你是对的,但是在那种情况下,它应该给出404错误,为什么它会给出内部服务器错误

@ParitoshSingh:也许您的Web服务器配置有问题? 如果500错误是由Apache / nginx引起的,则需要修复该错误。 还是看到Django 500错误页面?

对于Django> = 1.5,如果遇到此问题,请确保正确设置ALLOWED_HOSTS设置。没有该设置将使Django Compressor陷入UncompressableFileError。

我知道我们已经在2014年了,这个问题有点老了;)但是我今天才陷入这个问题,针对我的特殊情况的解决方案是,并没有在任何地方解释它。

希望它可以帮助其他人。

您可以打开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的电子邮件。希望对您有所帮助。

这个问题也困扰着我。大多数解决方案都与设置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/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值