Django - CSS-файл не загружается на производственном сервере (отладка: False)

Используем: nginx, gunicorn, linode для сервера

Debug=False

Когда я сохраняю debug=False в production, файл css не загружается. Я также создал страницу 404.html. Предположим, кто-то посетит mydomain.com/abcd, тогда он/она получит страницу 404, которую я создал. Это хорошо. Проблема в том, что файл css не загружается.

Debug True

Когда я сохраняю debug=True в production, css файл загружается. Все идет правильно. Но когда кто-то посещает mydomain.com/abcd, он/она получает страницу ошибки django defaualt. Если я сохраняю debug=True в production, все идет правильно, но я слышал, что сохранение debug=True в production не рекомендуется и может вызвать проблемы безопасности на сайтах

В настоящее время в моем settings.py и nginx cofig есть следующее :

settings.py :

DEBUG =True

ALLOWED_HOSTS = ['ip','mydomain.com','www.mydomain.com']

Файл конфигурации Nginx :

server {
    server_name mydomain.com www.mydomain.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location projectdir/static/ {
        autoindex on ;
        root /home/user/projectdir;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }

Пожалуйста, помогите мне решить проблему, так как я борюсь с ней уже 1 неделю. В настоящее время сайт работает и css загружается при сохранении debug=True. Но я не хочу, чтобы в дальнейшем возникли проблемы с безопасностью.

В файле settings.py:

Вы можете просто добавить следующий код:

DEBUG = bool(int(os.environ.get('DEBUG', 0))) #Note: 0 means false and 1 means true

Попробуйте этот способ и проверьте, решит ли он вашу ошибку

config требуется в вашем settings.py

...
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATIC_URL = "/static/"

убедитесь, что вы выполнили следующее, чтобы django нашел все ваши статические файлы и поместил их в одно место

$python manage.py collectstatic 
Статическая конфигурация

nginx должна выглядеть более похоже на

...
location /static/ {
    autoindex on;
    alias /home/user/projectdir/static/;
}
Вернуться на верх