FAQ: Использование Django ¶
Почему я получаю сообщение об ошибке при импорте DJANGO_SETTINGS_MODULE
? ¶
Убедись в том, что:
- Переменная окружения
DJANGO_SETTINGS_MODULE
установлен на полностью квалифицированный модуль Python (например, «mysite.settings»). - Указанный модуль включен
sys.path
( должен работать).import mysite.settings
- Модуль не содержит синтаксических ошибок.
Я терпеть не могу ваш язык шаблонов. Я должен его использовать? ¶
Мы думаем, что наш шаблонизатор - это лучшее, что есть после толстого бекона, но мы понимаем, что выбор языка шаблонов близок к религии. В Django нет ничего, что требовало бы использования языка шаблонов, поэтому, если вы привязаны к Jinja2, Mako или чему-то еще, не стесняйтесь их использовать.
Должен ли я использовать уровень вашей модели / базы данных? ¶
Неа. Как и система шаблонов, уровень модели / базы данных отделен от остальной части фреймворка.
Единственное исключение: если вы используете другую библиотеку базы данных, вы не сможете использовать автоматически сгенерированный сайт администратора Django. Это приложение связано с уровнем базы данных Django.
Как использовать поля изображения и файла? ¶
Использование a FileField
или an
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 .