#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:
Этот проект имеет структуру, аналогичную вашей
При запуске 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
. Отредактировано.