Css 如何在生产环境中查找django静态文件
我正在努力使django网站投入生产。开发版本工作正常,但在生产环境中,应用程序似乎找不到我的css文件 我知道有很多类似于我的问题,我仔细阅读了很多,并尝试了建议的解决方案。 除了静态文件问题外,生产版本似乎工作得很好 在settings.py中,我有Css 如何在生产环境中查找django静态文件,css,django,Css,Django,我正在努力使django网站投入生产。开发版本工作正常,但在生产环境中,应用程序似乎找不到我的css文件 我知道有很多类似于我的问题,我仔细阅读了很多,并尝试了建议的解决方案。 除了静态文件问题外,生产版本似乎工作得很好 在settings.py中,我有 DEBUG=False 及 我跑了 python manage.py collectstatic css和js目录被正确复制到my_app/static_文件中 我已重新启动服务器,但它仍然无法正常运行 生产服务器上的我的树是: . ├──
DEBUG=False
及
我跑了
python manage.py collectstatic
css和js目录被正确复制到my_app/static_文件中
我已重新启动服务器,但它仍然无法正常运行
生产服务器上的我的树是:
.
├── my_app
│ ├── __init__.py
│ ├── settings.py
│ ├── static
│ │ ├── css
│ │ │ ├── main.css
│ │ └── js
│ ├── templates
│ │ ├── base.html
│ ├── urls.py
│ └── wsgi.py
├── boards
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── templates
│ │ └── boards
│ │ ├── about.html
│ │ ├── contact.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── manage.py
├── passenger_wsgi.py
├── static_files
│ ├── css
│ │ ├── main.css
│ └── js
├── _templates
Web服务器处理这个问题。你用什么做服务器?例如,在Nginx上,静态/媒体文件都有路径
server {
set $app_name 'APP_NAME';
set $root 'ROOT/$app_name';
listen 8000;
server_name 127.0.0.1;
location /static/ {
root $root/;
}
location /media/ {
root $root/attachments/;
}
location / {
include proxy_params;
proxy_pass http://unix:$root/$app_name.sock;
}
}
经过数小时逐行查看代码,并受到答案的启发,我在wsgi.py中发现了这一点(看起来不太对劲): 我已将其更改为:
if settings.DEBUG:
application = get_wsgi_application()
else:
application = StaticFilesHandler(get_wsgi_application())
现在它找到了静态文件,并且工作得很好。我不知道它为我们提供了什么服务器。它在一个托管站点上,所以在他们的控制面板中会有一个设置,处理这个问题。看不到一个。它使用cPanel
if settings.DEBUG:
application = StaticFilesHandler(get_wsgi_application())
else:
application = get_wsgi_application()
if settings.DEBUG:
application = get_wsgi_application()
else:
application = StaticFilesHandler(get_wsgi_application())