Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 如何在生产环境中查找django静态文件_Css_Django - Fatal编程技术网

Css 如何在生产环境中查找django静态文件

Css 如何在生产环境中查找django静态文件,css,django,Css,Django,我正在努力使django网站投入生产。开发版本工作正常,但在生产环境中,应用程序似乎找不到我的css文件 我知道有很多类似于我的问题,我仔细阅读了很多,并尝试了建议的解决方案。 除了静态文件问题外,生产版本似乎工作得很好 在settings.py中,我有 DEBUG=False 及 我跑了 python manage.py collectstatic css和js目录被正确复制到my_app/static_文件中 我已重新启动服务器,但它仍然无法正常运行 生产服务器上的我的树是: . ├──

我正在努力使django网站投入生产。开发版本工作正常,但在生产环境中,应用程序似乎找不到我的css文件

我知道有很多类似于我的问题,我仔细阅读了很多,并尝试了建议的解决方案。 除了静态文件问题外,生产版本似乎工作得很好

在settings.py中,我有

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())