Django не видит статические файлы

#python #django

#python #django

Вопрос:

Итак, дело в том, что django просто не может распознать статические файлы. Что бы я ни пробовал, это просто не работает. Я попытался изменить способ глобального поиска на прямой URL файла css, похоже, ничего из этого не работает.

Структура моего проекта выглядит следующим образом:

структура

Вот мой код:

 DEBUG = True
INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
]
    STATIC_URL = '/static/'
    STATIC_DIRS = [os.path.join(BASE_DIR, "static")]
    STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn")
    from django.contrib import admin
    from django.urls import path
    from something.views import *
    from django.conf import settings
    from django.conf.urls.static import static
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', home),
        ]
    if settings.DEBUG:
        urlpatterns  = static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
    {% load static from staticfiles %}
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <title>Monkeys</title>
            <link rel="stylesheet" type="text/css" href="{% static 'css/file.css' %}"/>
        </head>
  

Ответ можно найти в любой теме в Интернете, поэтому я надеюсь, что вы могли бы помочь.

Комментарии:

1. Добро пожаловать в StackOverflow! Вы запускали python manage.py collectstatic ? Кроме того, возникает ли проблема в режиме отладки или в реальном времени (или в обоих)?

2. Да, как и должно быть

3. Из того, что я вижу, вы уже собрали статические файлы.

4. Пожалуйста, отправьте URL сгенерированного файла с отображаемой страницы, попробуйте открыть его вручную и отправьте сообщение об ошибке / http статус, который он вернет. Также print(STATIC_ROOT) .

5. Покажите полный путь к этому файлу, где бы он ни находился. И, пожалуйста, ответьте на вопрос из первого комментария: в вашем случае DEBUG = False или True? Вы работаете на dev или prod conf?

Ответ №1:

Вернитесь на несколько шагов назад и настройте статические файлы и убедитесь, что они точно соответствуют документам django

Только о статических файлах

Этот проект имеет структуру, аналогичную вашей

При запуске collectstatic значение STATICFILES_FINDERS по умолчанию равно django.contrib.staticfiles.finders.FileSystemFinder соберет ваши статические файлы из любых путей, которые у вас есть в STATICFILES_DIRS.

Другие параметры STATICFILES_FINDERS по умолчанию имеют значение django.contrib.staticfiles.finders.AppDirectoriesFinder будет искать в папке /static / любые приложения в вашем INSTALLED_APPS.

Все найденные статические файлы будут помещены в указанный каталог STATIC_ROOT.

 STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn")
  

Вы также можете использовать python manage.py найдите static, чтобы увидеть, в каких каталогах collectstatic будет искать.

 manage.py findstatic
  

Ответ №2:

В настоящее время у вас опечатка — STATIC_DIRS вместо STATICFILES_DIRS, поэтому collectstatic в настоящее время вообще не настроен.

Исправьте это, затем запустите collectstatic снова.

Комментарии:

1. На самом деле, он указывает на правильное место, потому что, когда я попробовал второй ваш вариант, он выдал мне ошибку, подобную этой —> FileNotFoundError: [Ошибка 2] Нет такого файла или каталога: ‘/Users/ivanizumov/Desktop / environment /практика / practice /static’

2. Верно, я не заметил os.path.dirname . Отредактировано.