ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ: Использование Django¶
Почему я получаю ошибку об импорте DJANGO_SETTINGS_MODULE?¶
Убедитесь в этом:
- The environment variable
DJANGO_SETTINGS_MODULEis 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_ROOTas 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_URLas 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.