Django_-_podrobnoe_rukovodstvo
.pdf470 |
Приложение D. Параметры настройки |
Утилита manage.py, сгенерированная командой startproject при создании заготовки проекта, автоматически устанавливает значение переменной DJANGO_SETTINGS_MODULE; подробнее о manage.py см. приложение F.
На сервере (mod_python)
На платформе Apache + mod_python необходимо сообщить серверу, где находится файл параметров. Делается это с помощью директивы SetEnv:
<Location “/mysite/”> SetHandler python-program
PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE mysite.settings
</Location>
Дополнительнуюинформациюсм.в руководствепомодулюmod_python на странице http://docs.djangoproject.com/en/dev/howto/deployment/mod python/.
Определение параметров без установки переменной DJANGO_SETTINGS_MODULE
Иногда бывает желательно обойти переменную окружения DJANGO_ SETTINGS_MODULE. Например, при автономном использовании системы шаблонов, когда нет необходимости определять какую-либо переменную, указывающую на файл настроек.
В таких случаях можно определить параметры настройки Django вручную. Для этого следует вызвать функцию django.conf.settings. configure(), например:
from django.conf import settings
settings.configure( DEBUG = True,
TEMPLATE_DEBUG = True, TEMPLATE_DIRS = [
‘/home/web-apps/myapp’, ‘/home/web-apps/base’,
]
)
Передайте функции configure() произвольные именованные аргументы, каждый из которых представляет один параметр и его значение. Имена параметров должны быть записаны заглавными буквами точно так же, как в описанном выше файле параметров. Если какой-то необходимый параметр не был передан configure(), то Django будет использовать его значение по умолчанию.
Определение параметров без установки переменной DJANGO_SETTINGS_MODULE 471
Такой способ настройки Django обычно применяется – и даже рекомендуется, – когда некоторая часть фреймворка используется внутри более обширного приложения, потому что при определении параметров с помощью settings.configure() Django не модифицирует окружение процесса. (См. ниже пояснения к параметру TIME_ZONE, где описано, почему это происходит при обычных обстоятельствах.) Предполагается, что в этой ситуации окружение и так полностью контролируется вами.
Нестандартные параметры по умолчанию
Если необходимо, чтобы значения по умолчанию брались не из файла django.conf.global_settings, а из какого-то другого места, то передайте соответствующий модуль или класс в аргументе default_settings (или
впервом позиционном аргументе) при вызове configure().
Впримере ниже значения по умолчанию берутся из модуля myapp_ defaults, а параметру DEBUG присваивается значение True вне зависимости от того, что находится в myapp_defaults:
from django.conf import settings from myapp import myapp_defaults
settings.configure(default_settings=myapp_defaults, DEBUG=True)
А можно было бы записать то же самое, передав myapp_defaults в виде позиционного аргумента:
settings.configure(myapp_defaults, DEBUG = True)
Обычно не возникает необходимости в таком переопределении значений по умолчанию. В Django они заданы достаточно разумно, и их можно использовать без опаски. Имейте в виду, что альтернативный модуль полностью заменяет все значения по умолчанию Django, поэтому в нем необходимо определить все параметры, которые используются в импортирующем его коде. Полный перечень параметров можно посмотреть в модуле django.conf.settings.global_settings.
Обязательность configure()
или DJANGO_SETTINGS_MODULE
Если вы не определяете переменную окружения DJANGO_SETTINGS_MODULE, то обязаны вызвать configure(), прежде чем обращаться к коду, в котором используются параметры настройки.
Если не сделать ни того, ни другого, то Django возбудит исключение EnvironmentError при первом же обращении к любому параметру. Если переменная DJANGO_SETTINGS_MODULE была установлена и вы успели хотя бы раз обратиться к какому-нибудь параметру, а потом вызвали configure(), то Django возбудит исключение EnvironmentError, извещая о том, что параметры уже сконфигурированы.
472 |
Приложение D. Параметры настройки |
Кроме того, не разрешается вызывать функцию configure() более одного раза или вызывать ее после любого обращения к параметрам.
Проще говоря, используйте какой-нибудь один механизм: configure()
или DJANGO_SETTINGS_MODULE, причем однократно.
Перечень имеющихся параметров
В следующих разделах приводится перечень основных параметров в алфавитном порядке с указанием значений по умолчанию.
ABSOLUTE_URL_OVERRIDES
Значение по умолчанию: {} (пустой словарь)
Это словарь, отображающий строки вида “app_label.model_name” на функции, которые принимают объект модели и возвращают его URL. Применяется для переопределения методов get_absolute_url() в конкретной инсталляции. Например:
ABSOLUTE_URL_OVERRIDES = {
‘blogs.weblog’: lambda o: “/blogs/%s/” % o.slug,
‘news.story’: lambda o: “/stories/%s/%s/” % (o.pub_year, o.slug),
}
Отметим, что имена моделей в словаре должны быть записаны строчными буквами вне зависимости от того, как на самом деле называется класс модели.
ADMIN_MEDIA_PREFIX
Значение по умолчанию: ‘/media/’
Префикс URL для вспомогательных файлов, используемых в админис тративном интерфейсе: CSS, JavaScript и изображений. Должен заканчиваться символом слеша.
ADMINS
Значение по умолчанию: () (пустой кортеж)
В этом кортеже перечисляются лица, которым следует посылать извещения об ошибках. Если DEBUG=False и представление возбуждает исключение, то Django посылает на их адреса электронной почты сообщения с подробной информацией об исключении. Каждый элемент кортежа должен быть кортежем вида (Полное имя, адрес электронной почты), например:
((‘John’, ‘john@example.com’), (‘Mary’, ‘mary@example.com’))
Подчеркнем, что Django посылает сообщения всем перечисленным лицам при возникновении любой ошибки.
Перечень имеющихся параметров |
473 |
ALLOWED_INCLUDE_ROOTS
Значение по умолчанию: () (пустой кортеж)
Кортеж строк, описывающих допустимые префиксы файлов, указываемых в шаблонном теге {% ssi %}. Это мера безопасности, не позволяющая авторам шаблонов обращаться к файлам, которые не имеют к ним отношения.
Например, если предположить, что параметр ALLOWED_INCLUDE_ROOTS имеет значение (‘/home/html’, ‘/var/www’), то тег {% ssi /home/html/foo.txt %} будет работать, а {% ssi /etc/passwd %} приведет к ошибке.
APPEND_SLASH
Значение по умолчанию: True
Определяет, нужно ли завершать URL-адреса символом слеша. Используется, только если установлен дополнительный процессор CommonMiddleware (см. главу 17). См. также описание параметра PREPEND_ WWW.
CACHE_BACKEND
Значение по умолчанию: ‘locmem://’
Определяет используемый механизм кэширования (см. главу 15).
CACHE_MIDDLEWARE_KEY_PREFIX
Значение по умолчанию: ‘’ (пустая строка)
Префикс ключа кэша, используемый дополнительным процессором кэширования (см. главу 15).
DATABASE_ENGINE
Значение по умолчанию: ‘’ (пустая строка)
Определяет реализацию механизма доступа к СУБД (например,
‘postgresql_psycopg2’ или ‘mysql’).
DATABASE_HOST
Значение по умолчанию: ‘’ (пустая строка)
Адрес сервера базы данных. Пустая строка означает localhost. Для SQLite игнорируется.
Если вы работаете с СУБД MySQL и значение параметра начинается с символа слеша (/), то подключение к MySQL будет производиться посредством UNIX-сокета:
DATABASE_HOST = ‘/var/run/mysql’
474 |
Приложение D. Параметры настройки |
Если вы работаете с СУБД MySQL и значение параметра не начинается с символа слеша, то предполагается, что это доменное имя или IP-адрес сервера.
DATABASE_NAME
Значение по умолчанию: ‘’ (пустая строка)
Имя базы данных. Для SQLite полный путь к файлу базы данных.
DATABASE_OPTIONS
Значение по умолчанию: {} (пустой словарь)
Дополнительные параметры, необходимые для подключения к базе данных. Их названия описаны в документации по модулю интерфейса с соответствующей СУБД.
DATABASE_PASSWORD
Значение по умолчанию: ‘’ (пустая строка)
Пароль для подключения к базе данных. Для SQLite игнорируется.
DATABASE_PORT
Значение по умолчанию: ‘’ (пустая строка)
Номер порта для подключения к базе данных. Пустая строка означает, что следует использовать стандартный номер порта. Для SQLite игнорируется.
DATABASE_USER
Значение по умолчанию: ‘’ (пустая строка)
Имя пользователя для подключения к базе данных. Для SQLite игнорируется.
DATE_FORMAT
Значение по умолчанию: ‘N j, Y’ (например, Feb. 4, 2003)
Формат полей даты по умолчанию, используемый в списках для изменения, отображаемых в административном интерфейсе Django, и, возможно, в других местах системы. Синтаксис определения формата такой же, как в теге now (см. приложение E, табл. E.2).
См. также описания параметров DATETIME_FORMAT, TIME_FORMAT, YEAR_MONTH_ FORMAT и MONTH_DAY_FORMAT.
DATETIME_FORMAT
Значение по умолчанию: ‘N j, Y, P’ (например, Feb. 4, 2003, 4 p.m.)
Перечень имеющихся параметров |
475 |
Формат полей даты/времени по умолчанию, используемый в списках для изменения, отображаемых в административном интерфейсе Django, и, возможно, в других местах системы. Синтаксис определения формата такой же, как в теге now (см. приложение E, табл. E.2).
См. также описания параметров DATE_FORMAT, TIME_FORMAT, YEAR_MONTH_FORMAT и MONTH_DAY_FORMAT.
DEBUG
Значение по умолчанию: False
Включает или выключает режим отладки.
Если вы определяете собственные параметры настройки, имейте в виду, что в файле django/views/debug.py имеется регулярное выражение HIDDEN_ SETTINGS, которое скрывает в режиме отладки все, что содержит слова SECRET, PASSWORD или PROFANITIES. Это позволяет не заслуживающим доверия пользователям видеть отладочную информацию, из которой исключены секретные (или оскорбительные) параметры.
Отметим, однако, что в отладочной информации все равно имеются части, не предназначенные для широкой публики. Пути к файлам, параметры настройки и т. п. могут дать злоумышленнику дополнительные сведения о вашем сервере. Никогда не запускайте сайт в эксплуатацию с включенным параметром DEBUG.
DEFAULT_CHARSET
Значение по умолчанию: ‘utf-8’
Принимаемая по умолчанию кодировка объектов HttpResponse, для которых явно не указан тип MIME. В сочетании с параметром DEFAULT_ CONTENT_TYPE применяется для построения заголовка Content-Type. Подробнее об объектах HttpResponse см. приложение G.
DEFAULT_CONTENT_TYPE
Значение по умолчанию: ‘text/html’
Принимаемый по умолчанию тип содержимого в объектах HttpResponse, для которых явно не указан тип MIME. В сочетании с параметром DEFAULT_CHARSET применяется для построения заголовка Content-Type. Подробнее об объектах HttpResponse см. приложение G.
DEFAULT_FROM_EMAIL
Значение по умолчанию: ‘webmaster@localhost’
Адрес отправителя электронной почты по умолчанию, используемый при автоматизированной рассылке извещений от имени администраторов сайта.
476 |
Приложение D. Параметры настройки |
DISALLOWED_USER_AGENTS
Значение по умолчанию: () (пустой кортеж)
Перечень откомпилированных регулярных выражений, описывающих строки с названиями типов броузеров, которым не разрешено посещать ни одну страницу сайта. Применяется для защиты от нежелательных роботов. Используется, только если установлен дополнительный процессор CommonMiddleware (см. главу 17).
EMAIL_HOST
Значение по умолчанию: ‘localhost’
Почтовый сервер, через который отправляется электронная почта. См. также описание параметра EMAIL_PORT.
EMAIL_HOST_PASSWORD
Значение по умолчанию: ‘’ (пустая строка)
Пароль для доступа к SMTP-серверу, указанному в параметре EMAIL_ HOST. Используется в сочетании с параметром EMAIL_HOST_USER для аутентификации на почтовом сервере. Если хотя бы один из этих параметров пуст, Django не будет пытаться аутентифицироваться.
См. также описание параметра EMAIL_HOST_USER.
EMAIL_HOST_USER
Значение по умолчанию: ‘’ (пустая строка)
Имя пользователя для доступа к SMTP-серверу, указанному в параметре EMAIL_HOST. Если значение пусто, то Django не будет пытаться аутентифицироваться. См. также описание параметра EMAIL_HOST_PASSWORD.
EMAIL_PORT
Значение по умолчанию: 25
Номер порта для доступа к SMTP-серверу, заданному в параметре EMAIL_ HOST.
EMAIL_SUBJECT_PREFIX
Значение по умолчанию: ‘[Django] ‘
Префикс темы в заголовке Subject сообщений, отправляемых с помощью модулей django.core.mail.mail_admins или django.core.mail.mail_ managers. Рекомендуется добавлять в конце пробел.
FIXTURE_DIRS
Значение по умолчанию: () (пустой кортеж)
Перечень имеющихся параметров |
477 |
Перечень каталогов расположения файлов тестовых данных в порядке просмотра. Отметим, что компоненты пути в именах каталогов должны разделяться символами прямого слеша, даже для платформы Windows. Используется в системе тестирования Django, которая подробно описана на странице http://docs.djangoproject.com/en/dev/topics/testing/.
IGNORABLE_404_ENDS
Значение по умолчанию: (‘mail.pl’, ‘mailform.pl’, ‘mail.cgi’, ‘mailform.cgi’, ‘favicon.ico’, ‘.php’)
Этот кортеж состоит из строк, описывающих суффиксы URL, которые должны игнорироваться при рассылке извещений об ошибке 404 (подробнее об этом см. главу 12).
Извещения об ошибках 404, возникших при обращении к адресу URL, заканчивающемуся любой из таких строк, не посылаются.
См. также описания параметров IGNORABLE_404_STARTS и SEND_BROKEN_LINK_ EMAILS.
IGNORABLE_404_STARTS
Значение по умолчанию: (‘/cgi-bin/’, ‘/_vti_bin’, ‘/_vti_inf’)
То же, что и параметр IGNORABLE_404_ENDS, но относится к префиксам URL.
См. также описания параметров IGNORABLE_404_ENDS и SEND_BROKEN_LINK_ EMAILS.
INSTALLED_APPS
Значение по умолчанию: () (пустой кортеж)
Кортеж строк, описывающий все активированные приложения в данной инсталляции Django. Каждая строка должна содержать полный путь Python к пакету приложения Django. Подробнее о приложениях см. главу 5.
LANGUAGE_CODE
Значение по умолчанию: ‘en-us’
Код языка для данной инсталляции. Должен быть указан в стандартном формате; например, американский диалект английского языка обозначается “en-us”. См. главу 19.
LANGUAGES
Значение по умолчанию: кортеж, содержащий все поддерживаемые языки. Этот список постоянно расширяется, поэтому какой бы перечень мы здесь ни привели, он очень быстро устареет. Актуальный пере-
478 |
Приложение D. Параметры настройки |
чень языков, на которые переведен Django, можно найти в файле django/ conf/global_settings.py.
Перечень представляет собой кортеж, каждый элемент которого является кортежем вида (код языка, название языка), например, (‘ja’, ‘Japanese’). Из этого перечня можно выбирать язык сайта. О выборе языка см. главу 19.
Обычно значения по умолчанию вполне достаточно. Изменять этот параметр следует лишь в том случае, если вы хотите ограничить выбор языка подмножеством из всех доступных.
Если вы переопределите параметр LANGUAGES, то названия языков можно задавать как строки для перевода, но ни в коем случае не следует импортировать модуль django.utils.translation из файла параметров, потому что сам этот модуль зависит от параметров, и импортирование этого модуля приведет к образованию циклической зависимости.
Решить проблему можно путем использования «фиктивной» функции gettext(). Вот пример фрагмента файла параметров:
gettext = lambda s: s
LANGUAGES = (
(‘de’, gettext(‘German’)), (‘en’, gettext(‘English’)),
)
В этом случае утилита make-messages.py найдет и пометит эти строки для перевода, но на этапе выполнения перевод производиться не будет; вы должны не забыть обернуть названия языков настоящей функцией gettext() в любом месте программы, где используется параметр
LANGUAGES.
MANAGERS
Значение по умолчанию: () (пустой кортеж)
Кортеж в таком же формате, как ADMINS; определяет, кто должен получать извещения о «битых» ссылках, когда параметр SEND_BROKEN_LINK_ EMAILS=True.
MEDIA_ROOT
Значение по умолчанию: ‘’ (пустая строка)
Абсолютный путь к каталогу, где хранятся мультимедийные файлы для данной инсталляции (например, “/home/media/media.lawrence.com/”). См. также описание параметра MEDIA_URL.
MEDIA_URL
Значение по умолчанию: ‘’ (пустая строка)
Перечень имеющихся параметров |
479 |
URL для доступа к файлам из каталога MEDIA_ROOT (например, “http:// media.lawrence.com”). Если этот URL содержит путь, то он должен завершаться символом слеша.
•• Правильно: “http://www.example.com/static/”
•• Неправильно: “http://www.example.com/static”
Дополнительные сведения о развертывании и обслуживании мультимедийного содержимого см. в главе 12.
MIDDLEWARE_CLASSES
Значение по умолчанию:
(“django.contrib.sessions.middleware.SessionMiddleware”,
“django.contrib.auth.middleware.AuthenticationMiddleware”,
“django.middleware.common.CommonMiddleware”,
“django.middleware.doc.XViewMiddleware”)
В этом кортеже представлены классы дополнительных процессоров. См. главу 17.
MONTH_DAY_FORMAT
Значение по умолчанию: ‘F j’
Формат полей даты по умолчанию в списках для изменения, отображаемых в административном интерфейсе Django, и, возможно, в других местах системы, в случае, когда выводится только месяц и день. Синтаксис определения формата такой же, как в теге now (см. приложение E, табл. E.2).
Например, если страница со списком для изменений в административном интерфейсе Django отфильтрована по дате, то в заголовке для выбранной даты будет отображаться только день и месяц. Формат зависит от локали. Например, в США дата будет выводиться в виде «January 1», а в Испании – «1 enero».
См. также описания параметров DATE_FORMAT, DATETIME_FORMAT, TIME_FORMAT и YEAR_MONTH_FORMAT.
PREPEND_WWW
Значение по умолчанию: False
Определяет необходимость добавления префикса «www.» в адреса URL, в которых он отсутствует. Используется, только если установлен дополнительный процессор CommonMiddleware (см. главу 17). См. также описание параметра APPEND_SLASH.
