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/
所以我试图将我的网站投入生产,但我在虚拟环境中遇到了一个问题,我的静态文件找不到(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/