четверг, 23 мая 2013 г.

Как настроить MEDIA_ROOT и MEDIA_URL в Django

Параметры MEDIA_ROOT и MEDIA_URL показывают, куда будут складываться файлы, загружаемые пользователями вашего Django-сайта.
Но как их правильно настроить?


Посмотрите на выдержку из settings.py одного проекта:

# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/var/www/example.com/media/"
MEDIA_ROOT = 'media/'

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://example.com/media/", "http://media.example.com/"
MEDIA_URL = 'http://127.0.0.1:8000/media/'

Как видите, здесь настроено так, как говорится в комментариях, любезно предоставленных нам разработчиками Django. Это правило, которое следует соблюдать, чтобы потом не страдать, перенастраивая подключенное стороннее приложение.

Подключил я как-то приложение django-attachments к своему проекту. Из-за того, что параметры MEDIA_ROOT и MEDIA_URL были настроены не по стандарту, файлы загружались, но в админке не отображались - т.к. разработчик этого стороннего приложения думал, что мы люди "хорошие" и следуем правилам Django.

Кстати, обратите внимание, что параметры settings.py вы можете использовать в своих приложениях. Вот, к примеру, выдержка главного urls.py моего проекта:

# Импортируем настройки проекта
from django.conf import settings

if settings.DEBUG:
    # Устанавливаем настройки для обработки картинок, загруженных пользователем
    urlpatterns += patterns('',
        (r'^' + settings.MEDIA_ROOT + '(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
    )

Здесь мы обращаемся к настройкам проекта так: settings.MEDIA_ROOT или settings.MEDIA_ROOT. Это позволяет нам соблюдать DRY принцип.

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

Отправить комментарий