ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ: Использование Django¶
Почему я получаю ошибку об импорте DJANGO_SETTINGS_MODULE
?¶
Убедитесь в этом:
- Переменная окружения
DJANGO_SETTINGS_MODULE
устанавливается на полностью определенный модуль Python (т.е. «mysite.settings»). - Указанный модуль находится на
sys.path
(import mysite.settings
должен работать). - Модуль не содержит синтаксических ошибок.
Я не выношу ваш шаблонный язык. Должен ли я его использовать?¶
Мы считаем, что наш движок шаблонов - это лучшее, что было со времен кускового бекона, но мы понимаем, что выбор языка шаблонов близок к религии. В Django нет ничего, что требовало бы использования языка шаблонов, так что если вы привязаны к Jinja2, Mako или чему-либо еще, не стесняйтесь использовать их.
Должен ли я использовать вашу модель/слой базы данных?¶
Нет. Как и система шаблонов, слой модели/базы данных отделен от остальной части фреймворка.
Единственное исключение: если вы используете другую библиотеку баз данных, вы не сможете использовать автоматически генерируемый Django администраторский сайт. Это приложение привязано к слою базы данных Django.
Как использовать поля изображений и файлов?¶
Использование FileField
или ImageField
в модели требует нескольких шагов:
- В вашем файле настроек вам нужно определить
MEDIA_ROOT
как полный путь к директории, в которой вы хотите, чтобы Django хранил загруженные файлы. (Для повышения производительности эти файлы не хранятся в базе данных). ОпределитеMEDIA_URL
как базовый публичный URL этого каталога. Убедитесь, что этот каталог доступен для записи учетной записи пользователя веб-сервера. - Добавьте
FileField
илиImageField
к вашей модели, определив опциюupload_to
для указания подкаталогаMEDIA_ROOT
, который будет использоваться для загруженных файлов. - Все, что будет храниться в вашей базе данных, это путь к файлу (относительно
MEDIA_ROOT
). Скорее всего, вы захотите использовать удобный атрибутurl
, предоставляемый Django. Например, если вашImageField
называетсяmug_shot
, вы можете получить абсолютный путь к вашему изображению в шаблоне с помощью{{ object.mug_shot.url }}
.
Как сделать переменную доступной для всех моих шаблонов?¶
Иногда вашим шаблонам требуется одно и то же. Частым примером могут быть динамически создаваемые меню. На первый взгляд, кажется логичным добавить общий словарь в контекст шаблона.
Лучший способ сделать это в Django - использовать RequestContext
. Подробности о том, как это сделать, здесь: Использование RequestContext.