【问题标题】:Strange 500 server error issue with django-pipelinedjango-pipeline 出现奇怪的 500 服务器错误问题
【发布时间】:2014-05-27 22:33:05
【问题描述】:

我正在使用 django-pipeline 来缩小 js 以及 js 和 css 的版本控制。我非常清楚 Debug=False 和 allow_hosts=['*'] 所以这里不是这种情况。 奇怪的问题是,我在 8 页中的 2 页中收到 500 个服务器错误。 这些页面在使用的 css 和 js 方面几乎相同(这里有几个 js/css,但这对我来说似乎不是问题)。我收到 500 服务器错误的 2 个页面正在使用谷歌地图,但即使我删除了谷歌地图调用,问题仍然存在。 settings.py 文件包含以下内容:

DEBUG = False
TEMPLATE_DEBUG = DEBUG
ALLOWED_HOSTS = ['*']
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'

STATICFILES_FINDERS = (
  'django.contrib.staticfiles.finders.FileSystemFinder',
  'django.contrib.staticfiles.finders.AppDirectoriesFinder',
  'pipeline.finders.PipelineFinder',
)

PIPELINE_CSS = {
    'style': {
            'source_filenames': (
                    'css/style.css',
            ),
            'output_filename': 'css/style.min.css',
    }
}

PIPELINE_JS = {
    'jquery-util': {
            'source_filenames': (
                    'js/jquery.min.js',
                    'js/mousewheel.js',
                    'js/jquery-ui-1.9.2.custom.min.js',
                    'js/jquery-ui-1.9.2.custom-datepicker.min.js',
                    'js/datepickr.js',
                    'js/mscrollbar.min.js',
                    'js/jqtransform.js',
                    'js/dropdownchecklist.js',
                    'js/tooltipster.min.js',
                    'js/jquery.colorbox-min.js',
                    'js/nouislider.min.js',
                    'js/unslider.js',
                    'js/flexslider.js',
                    'js/base64.min.js',
                    'js/intro.js',
            ),
            'output_filename': 'js/jquery-util.min.js',
    },
    'map-util': {
            'source_filenames': (
                    'js/epolys.js',
                    'js/arc.js',
                    'js/arrow.js',
                    'js/map.js',
            ),
            'output_filename': 'js/map-util.min.js',
    },
    'common-fb': {
            'source_filenames': (
                    'js/common.js',
                    'js/fb.js',
            ),
            'output_filename': 'js/common-fb.min.js',
    },
    'home': {
            'source_filenames': (
                    'js/home.js',
            ),
            'output_filename': 'js/home.min.js',
    },
    'results': {
            'source_filenames': (
                    'js/results.js',
            ),
            'output_filename': 'js/results.min.js',
    },
    'planning': {
            'source_filenames': (
                    'js/planning.js',
            ),
            'output_filename': 'js/planning.min.js',
    },
    'account': {
            'source_filenames': (
                    'js/account.js',
            ),
            'output_filename': 'js/account.min.js',
    }
}

PIPELINE_DISABLE_WRAPPER = True
PIPELINE_CSS_COMPRESSOR = 'pipeline.compressors.yui.YUICompressor'
PIPELINE_JS_COMPRESSOR = 'pipeline.compressors.yui.YUICompressor'
PIPELINE_YUGLIFY_BINARY = '/usr/local/bin/yuglify'
PIPELINE_YUI_BINARY = 'yui-compressor'

我已经花了 4 个多小时进行调试,但到目前为止没有任何帮助。谁能告诉我这里可能是什么问题。

附:我已将 {% load compressed %} 添加到所有模板中,所以这也不是问题。

【问题讨论】:

  • 请同时发布您在日志中遇到的错误。
  • apache 日志没有显示 500 错误。当我设置 DEBUG = False 时...所有页面都可以正常工作,如果 Debug = True 只有两个页面无法正常工作,出现 500 错误。
  • 这实际上是我在编码生涯中遇到过的最奇怪的问题。问题仅在于 html 模板,但我不知道它是什么。当我删除 标记内的所有内容时,我不会收到 500 服务器错误,但是当我删除 内的小部分以调试导致问题的部分时,我总是会收到 500 错误,直到我删除 内的所有内容.呜呜呜……

标签: django django-pipeline


【解决方案1】:

奇怪的问题有一个奇怪的解决方案。

在用头撞墙这么多小时后,我能够找到原因和解决方案,但原因对我来说绝对不是很清楚。

当我完全删除“body”标签内的内容时,我没有收到 500 错误,所以我开始添加小块内容。我发现,当代码中有注释部分时,它会产生 500 错误,但是在添加了几行具有 cmets 的代码后并没有导致问题。于是我开始玩评论区,我发现了原因:

<!-- <div class="abc"> 
          <img class="bcd" src="{% static 'images/title.jpg' %}"> 
          <h2 class="xyz">Title</h2>
    </div> -->

上面这段代码会导致500错误

{% static 'images/title.jpg' %}

如果从评论中删除,500 错误就会消失。这似乎是 django/django-pipeline 的错误。

而奇怪的事实是

<!-- <script type="text/javascript" src="{% static 'js/jquery.min.js' %}"></script> -->

不会导致 500 错误。

如果有人知道原因,请告诉我。

更新

后来我发现这是由于缺少文件。当 debug 设置为 True 时,静态模板标签只会放置静态根路径,但当 debug 设置为 False 时,管道会尝试替换导致问题的不可用文件的版本控制(添加了哈希)文件。所以我们必须确保所有的静态模板标签在生产中都有有效的文件路径(debug=False)。

【讨论】:

  • 我的问题是缺少图片的静态标签,但这有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
相关资源
最近更新 更多