django 静态文件没有出现在虚拟环境中

django static files not appearing with virtual environment

所以我试图将我的网站投入生产,但我在虚拟环境中遇到了一个问题,我的静态文件找不到(404 错误)。

在 settings.py 文件中,我有 STATIC_ROOT = os.path.join(BASE_DIR, 'static/').

在文件 /etc/nginx/sites-available/django 中,我修改了静态文件位置,如下所示:

location /static {
     alias /home/user/myproject/static;
}

在目录 /home/user/myproject 中,我有另一个名为 static 的目录,里面有几个存放实际静态文件的目录。

即/home/user/myproject/static/shopApp/shop_app.css

即/home/user/myproject/static/officeApp/office_app.css

我想要查看的是我的配置是否设置不当。我是 django 和 web 开发的新手,非常感谢您的帮助!

编辑:经过一些研究后,我认为我遇到了与来自 Whosebug 的人相同的问题 link:Fetching static files failed with 404 in nginx

我认为第二个答案可能会解决我的问题,但我不知道在哪里应用命令 chown www-data:www-data .

STATIC_ROOT 仅适用于 prod,适用于您的应用程序或项目的静态文件夹。 PROD 静态 != 项目静态。例如你有 10 个应用程序,比如 django admin。如果没有 STATIC_ROOT 和 collectstatic 命令,您需要指向每个应用程序中的每个静态文件夹。 例如 location /static/admin { alias /home/user/myproject/env../admin/static; } location /static/someapp { alias /home/user/myproject/someapp/static; } 但 Django 为您做了很多工作。您需要指向文件夹,该文件夹收集所有应用程序的所有静态信息。例如 STATIC_ROOT = os.path.join(BASE_DIR, 'static_remote/') 和 运行 collectstatic location /static { alias /home/user/myproject/static_root; }

事实证明,问题出在我的 settings.py 文件上。

具体来说,当您仍在虚拟环境 (0.0.0.0:8000) 中使用 django 开发服务器时,您应该将 DEBUG 设置为 True,以便它可以为您的静态文件提供服务。

切记!这仅适用于您使用 django development 服务器的情况。对于 production,应设置为 False

我从这篇 django 文章中获得了这些信息:https://docs.djangoproject.com/en/2.0/howto/static-files/