Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Django_-_podrobnoe_rukovodstvo

.pdf
Скачиваний:
373
Добавлен:
01.03.2016
Размер:
5 Мб
Скачать
☆

470

Приложение 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.