Django静态文件404

首先明白一点,在django中把debug改为false的话,django将不再为我们处理静态文件,我们需要使用web服务器进行代理静态资源,这时就需要去设置静态文件的路径,下面介绍如何设置

注:可以参考Stack Overflow上的回答
https://stackoverflow.com/questions/5836674/why-does-debug-false-setting-make-my-django-static-files-access-fail

1. settings修改

新增静态文件目录配置:

1
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

2. 静态文件收集

执行下述命令,将静态文件会收集到第一步设置的目录中

1
python manage.py collectstatic

3. 配置路由url

1
2
3
4
5
6
from django.views import static
from django.urls import re_path

urlpatterns = [
re_path('^static/(?P<path>.*)', static.serve, {'document_root': settings.STATIC_ROOT})
]

4. web服务器配置

下面简单给出nginx的配置

1
2
3
location /static {
alias /data/wwwroot/project/static;
}