django — ошибка сервера при загрузке статических файлов

Итак, я создаю свой собственный сайт django. Прямо сейчас я застрял с загрузкой статики. я получаю следующую ошибку в консоли:

 GET http://localhost:8000/static/css/style.css 500 (Internal Server Error)

Я пытаюсь загрузить файл css, используя статические теги:

{{ STATIC_URL }}

в моих настройках я отредактировал следующее:

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

STATIC_ROOT = os.environ.get('STATIC_ROOT',os.path.join(PROJECT_ROOT,"static",))
STATIC_URL = '/static/'


STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, "static",),
)

также добавлен TEMPLATE_CONTEXT_PROCESSORS:

TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
)

добавил следующее в urls.py, чтобы я мог перейти на localhost: 8000/static/

urlpatterns += patterns('',
(r'^static/(?P<path>.*)$',
'django.views.static.serve',
{'document_root': settings.STATIC_ROOT}),
)

Я не знаю, что я делаю неправильно. PROJECT_ROOT указывает на корень проекта. Я также использую это для своего TEMPLATE_DIR, и это прекрасно работает.

Надеюсь, кто-нибудь просветит меня! Я гуглил и смотрел на другие вопросы, но, насколько я вижу, я сделал все, как должен!

Спасибо заранее!!


person Kevinvhengst    schedule 15.03.2013    source источник
comment
Возможно, это может помочь вам? stackoverflow.com/questions/ 14799835/   -  person Henrik Andersson    schedule 15.03.2013
comment
В чем ошибка? Опубликуйте трассировку. А какую версию Django вы используете?   -  person freakish    schedule 15.03.2013


Ответы (3)


У вас есть STATIC_ROOT в STATICFILES_DIRS! Это неправильно.

Не уверен, что ваша проблема связана с этим, но она определенно показывает отсутствие понимания управления статическими файлами django.

Возможно, после прочтения этой статьи вы поймете это полностью и сможете настроить его правильно.

И вам это не нужно с DEBUG=True:

urlpatterns += patterns('',
(r'^static/(?P<path>.*)$',
'django.views.static.serve',
{'document_root': settings.STATIC_ROOT}),
)
person jpic    schedule 15.03.2013

Ну, у меня была такая же проблема, а потом я увидел это сообщение об ошибке:

"Ваша настройка STATICFILES_DIRS не является кортежем или списком;" django.core.exceptions.ImproperlyConfigured: Ваша настройка STATICFILES_DIRS не является кортежем или списком; возможно, вы забыли запятую в конце?»

Итак, я преобразовал результат

(os.path.join(BASE_DIR, 'static'))

К списку:

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

Надеюсь, это поможет кому-то.

person Ivan    schedule 27.03.2016

person    schedule
comment
Не могли бы вы объяснить, почему я должен изменить его на это? Я пробовал это, все еще получаю ошибку. - person Kevinvhengst; 15.03.2013
comment
@KevinvanHengst Подождите, ваш DEBUG = True? - person catherine; 15.03.2013
comment
Измените это на DEBUG=False - person catherine; 15.03.2013
comment
Хорошо, когда я изменил его на False, он работает! Но какое отношение выбор файла css имеет к тому, что DEBUB имеет значение True/False? - person Kevinvhengst; 15.03.2013
comment
Когда вы устанавливаете отладку в True (local). Система проверит, есть ли у вас 404.html. Если он не существует, вы получите ошибку 500 - person catherine; 15.03.2013
comment
Проблема была не в DEBUG. Я подошел к терминалу и наткнулся на это: "ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting" Итак, я очистил свой STATIC_ROOT, и теперь он работает нормально. с ОТЛАДКА = Истина/Ложь - person Kevinvhengst; 15.03.2013