ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ: Использование Django¶
Почему я получаю ошибку об импорте DJANGO_SETTINGS_MODULE
?¶
Убедитесь в этом:
- The environment variable
DJANGO_SETTINGS_MODULE
is set to a fully-qualified Python module (i.e.mysite.settings
). - Указанный модуль находится на
sys.path
(import mysite.settings
должен работать). - Модуль не содержит синтаксических ошибок.
Я не выношу ваш шаблонный язык. Должен ли я его использовать?¶
Мы считаем, что наш движок шаблонов - это лучшее, что было со времен кускового бекона, но мы понимаем, что выбор языка шаблонов близок к религии. В Django нет ничего, что требовало бы использования языка шаблонов, так что если вы привязаны к Jinja2, Mako или чему-либо еще, не стесняйтесь использовать их.
Должен ли я использовать вашу модель/слой базы данных?¶
Нет. Как и система шаблонов, слой модели/базы данных отделен от остальной части фреймворка.
Единственное исключение: если вы используете другую библиотеку баз данных, вы не сможете использовать автоматически генерируемый Django администраторский сайт. Это приложение привязано к слою базы данных Django.
Как использовать поля изображений и файлов?¶
Использование FileField
или ImageField
в модели требует нескольких шагов:
- In your settings file, you’ll need to define
MEDIA_ROOT
as the full path to a directory where you’d like Django to store uploaded files. (For performance, these files are not stored in the database.) DefineMEDIA_URL
as the base public URL of that directory. Make sure that this directory is writable by the web server’s user account. - Добавьте
FileField
илиImageField
к вашей модели, определив опциюupload_to
для указания подкаталогаMEDIA_ROOT
, который будет использоваться для загруженных файлов. - Все, что будет храниться в вашей базе данных, это путь к файлу (относительно
MEDIA_ROOT
). Скорее всего, вы захотите использовать удобный атрибутurl
, предоставляемый Django. Например, если вашImageField
называетсяmug_shot
, вы можете получить абсолютный путь к вашему изображению в шаблоне с помощью{{ object.mug_shot.url }}
.
Как сделать переменную доступной для всех моих шаблонов?¶
Иногда вашим шаблонам требуется одно и то же. Частым примером могут быть динамически создаваемые меню. На первый взгляд, кажется логичным добавить общий словарь в контекст шаблона.
Лучший способ сделать это в Django - использовать RequestContext
. Подробности о том, как это сделать, здесь: Использование RequestContext.