Django调试工具栏导致静态文件丢失

时间:2015-07-16 14:39:25

标签: django django-debug-toolbar

要清楚,调试工具栏会出现。我的问题是,当我启用调试工具栏时,我的所有javascript和css文件都无法加载。

我的网页丢失了所有格式,但仍然加载了内容。我正在使用chrome,它在控制台下面打印出这样的东西:

无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/stylesheets/loggedin.css?h=201e99无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/stylesheets/estimates.tabs.css?h=64c8f9无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/js/jquery.console-log.js无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/theme/jquery-ui.custom.css无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/js/jquery-ui-timepicker-addon.js?h=7e5e4a无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/js/jquery.if.min.js?h=e69918无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/js/base.js?h=4b783f无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/stylesheets/estimates.summary.show.css?h=0dd5d5无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/js/jquery.floatThead.min.js?h=7f4ca5无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/stylesheets/reset.css?h=fbd5ac无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/js/estimates.section.sortable.js?h=2ea052无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/stylesheets/loggedin.css?h=201e99无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/stylesheets/estimates.tabs.css?h=64c8f9无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/stylesheets/estimates.summary.show.css?h=0dd5d5无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/stylesheets/reset.css?h=fbd5ac无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/stylesheets/base.css?h=fcefb2无法加载资源:服务器响应状态为404(未找到) http://127.0.0.1:8000/static/theme/jquery-ui.custom.css无法加载资源:服务器响应状态为404(未找到)

我使用的是debug_toolbar 1.3.2,django1.5.0和python 2.7.6

我的项目结构有

project_dir
  project
  settings
    settings.py
  static
    images
    js
    scss
    stylesheets

在我的设置文件中:

DEBUG = True
DEBUG_TOOLBAR = True 

#....middleware
#....other Installed apps
cd_up = lambda x: os.path.split(x)[0]
SETTINGS_DIR = dirname(os.path.abspath(__file__))
APP_DIR = cd_up(SETTINGS_DIR)
PROJ_DIR = cd_up(APP_DIR)

MEDIA_ROOT = '/tmp'
MEDIA_URL = ''
STATIC_URL = '/static/'
STATIC_ROOT = '{}/static/'.format(APP_DIR)

if DEBUG_TOOLBAR:
  INSTALLED_APPS += ('django.contrib.staticfiles','debug_toolbar',)
  MIDDLEWARE_CLASSES += debug_toolbar.middleware.DebugToolbarMiddleware',)
  INTERNAL_IPS = ('127.0.0.1',)
  DEBUG_TOOLBAR_PANELS = (
    #'debug_toolbar.panels.version.VersionDebugPanel',
    #'debug_toolbar.panels.timer.TimerDebugPanel',
    #'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel',
    #'debug_toolbar.panels.headers.HeaderDebugPanel',
    #'debug_toolbar.panels.request_vars.RequestVarsDebugPanel',
    #'debug_toolbar.panels.template.TemplateDebugPanel',
    'debug_toolbar.panels.sql.SQLDebugPanel',
    #'debug_toolbar.panels.signals.SignalDebugPanel',
    #'debug_toolbar.panels.logger.LoggingPanel',
  )

当然,我无法发送任何ajax请求并将DEBUG_TOOLBAR设置为false可以解决所有问题。

这是精简版,但如果需要任何其他信息,我会更新。对不起,我还是新来的SO。感谢

更新:   运行./manage.py runserver --insecure

时会出现404错误

否则资源将失败并显示net :: ERR_NETWORK_CONNECTION_RESET

消息

2 个答案:

答案 0 :(得分:1)

我认为这是在您使用虚拟环境时发生的。问题是在那里安装了Django软件包,项目无法访问文件。您可以通过在控制台中运行(基于python版本) python3 manage.py collectstatic 来解决此问题。这就是我最终解决此问题的方法。希望对您有帮助

答案 1 :(得分:0)

我不确定发生了什么,但这里有几点需要检查:

  1. 当DEBUG_TOOLBAR为false时,INSTALLED_APPS中的django.contrib.staticfiles是?如果已添加,则此行

    INSTALLED_APPS + =('django.contrib.staticfiles','debug_toolbar',)

    会导致重复的应用名称。它不应该导致任何问题,但您可以尝试删除副本。

  2. 您确定DEBUG设置为True吗?当DEBUG为False时,开发服务器拒绝提供静态文件(CONNECTION RESET?),如果添加--insecure选项,它将提供静态文件。这就像你描述的那样。

  3. 您是否覆盖了urls.py中“/ static /”的网址映射?

  4. 您是否在虚拟机中启动此服务器?如果是这样,您可以尝试使用以下命令启动服务器:

    python manage.py runserver 0.0.0.0:8000

    并将虚拟机的IP地址添加到INTERNAL_IP。