2013-10-06 7 views
0

Я новичок в Django (1.5), и мне тяжело относиться к относительной конфигурации медиа-папки в MEDIA_ROOT. Я не могу заряжать файлы .css, .js, .jpg в моем проекте. Я получаю сообщ в оболочке:Django 1.5 (MEDIA_ROOT, TEMPLATE_DIRS)

[06/Октябрь/2013 19:12:01] "GET /media/css/style.css HTTP/1.1" 404 4140

это дерево из проект:

  • _3Ms
    • _3Ms
    • приложения
    • СМИ
      • Css
      • расслоение плотной
      • изображения
    • шаблон

это моя конфигурация

setting.py

MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'media/') 

MEDIA_URL = '/media/' 

STATIC_ROOT = '' 

STATIC_URL = '/static/' 

STATICFILES_DIRS = (
) 


STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader', 
    'django.template.loaders.app_directories.Loader', 
#  'django.template.loaders.eggs.Loader', 
) 

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    # Uncomment the next line for simple clickjacking protection: 
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 

ROOT_URLCONF = '_3Ms.urls' 

WSGI_APPLICATION = '_3Ms.wsgi.application' 

TEMPLATE_DIRS = os.path.dirname(__file__), 'templates', 
) 

home.html

{% block css %}<link href="/media/css/style.css" rel="stylesheet">{% endblock %} 

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

ответ

3

обычно используется STATIC_URL для статических активов, таких как CSS и JavaScript. Медиа используется для администрирования или загруженных пользователем файлов.

Итак, заполните STATICFILES_DIR и используйте STATIC_URL в ваших шаблонах.

Настройки:

import os.path 

PROJECT_PATH = os.path.abspath(os.path.join(os.path.split(__file__)[0], '..')) 

STATICFILES_DIRS = [ 
    '/path/to/your/static/assets', 
    os.path.abspath(os.path.join(PROJECT_PATH, '..', 'static')), 
] 

шаблона:

{% block css %}<link href="{{ STATIC_URL }}css/style.css" rel="stylesheet">{% endblock %} 

Я предполагаю, что ваш используете devserver Django.

+0

Спасибо за помощь. Я использую сервер django, но в будущем он войдет в производство, для этого я хочу относительный MEDIA_ROOT. Ваше решение это нормально, но мне нужен относительный MEDIA_ROOT. – user2844060

+0

Опять же, вы не хотите, чтобы MEDIA_ROOT для статических файлов, таких как CSS и Javascript. –

+0

Объясните, что вы подразумеваете под требуемым относительным путем. Я изменил свой пример, чтобы показать более гибкий способ назвать пути. –

Смежные вопросы