【问题标题】:Django static files 404 on server, although working locally服务器上的 Django 静态文件 404,虽然在本地工作
【发布时间】:2015-08-06 05:18:39
【问题描述】:

我已经使用 WSGI 在 apache 服务器上部署了一个 django 应用程序,但是静态文件给了我 404 错误,尽管使用 Django 的开发服务器在我的 PC 上一切正常。

我的 apache2.conf:

WSGIScriptAlias /app /srv/App/App/wsgi.py
WSGIPythonPath /srv/App

<Directory /srv/App/App>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

settings.py

STATIC_URL = '/app/static/'

STATICFILES_DIRS = (
   os.path.join(BASE_DIR, 'static'),
)

我如何通过模板调用静态文件的示例

{% load staticfiles %}
...
<link rel="stylesheet" href='{% static "css/main.css" %}'>

与我的本地版本的应用程序唯一不同的是,我在 settings.py 上的 STATIC_URL 不包含“/app”部分。根据 Chrome 的开发者工具,我的静态文件的 URL 是:

http://.../app/static/css/main.css

(使用我的模板示例的静态文件) 我认为这应该是正确的,并且无法理解它不起作用的原因。

【问题讨论】:

    标签: python django apache static


    【解决方案1】:

    您在 Apache 配置中没有任何 Alias 指令告诉 Apache 您的静态文件在哪里以及您希望它们出现在哪个 URL 下。见:

    【讨论】:

    • 非常感谢,就这样
    【解决方案2】:

    你没有忘记运行这个吗?

    manage.py collectstatic
    

    请参阅documentation

    【讨论】:

      【解决方案3】:

      这是一个经常出现的问题。你必须:

      • 指定STATIC_ROOT
      • 运行collectstatic
      • 实时不需要STATICFILES_DIRS(由 Apache 处理)。

      看看Django documentation: Managing static files

      【讨论】:

      • 我添加了 STATIC_ROOT = '/var/www/html/app/static' (STATIC_URL 保持原样)并运行 collectstatic 但问题仍然存在,尽管文件已复制到 STATIC_ROOT var 的目录。如果我删除 STATICFILES_DIRS,它会将我的“...App/static”文件夹的静态文件留在外面。
      猜你喜欢
      • 2015-12-24
      • 2018-01-19
      • 2021-07-06
      • 2014-07-30
      • 1970-01-01
      • 2015-07-08
      • 2013-12-08
      • 1970-01-01
      • 2014-03-20
      相关资源
      最近更新 更多