FAQ: Использование 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.
Как использовать поля для загрузки картинок и файлов?¶
Для них предназначены специальные классы (FileField и ImageField). Использовать их можно так:
В файле настроек нужно указать
MEDIA_ROOT- полный путь к каталогу, где Django будет хранить загруженные файлы. Для быстродействия не стоит хранить их в базе данных. ОпределитеMEDIA_URL- базовый URL к этому каталогу и убедитесь, что у веб-сервера есть права на запись туда файлов.В полях типа
FileFieldилиImageFieldвашей модели установитеupload_toравным пути к каталогу, в котором будут сохраняться файлы. Путь должен быть относительным кMEDIA_ROOT.Всё, что будет сохранено в базу данных - путь к файлу (относительно
MEDIA_ROOT). Для удобного получения URL к файлу можно использоватьurl. Например, если поле типаImageFieldназываетсяmug_shot, то получить абсолютный путь в шаблоне можно следующим образом{{ object.mug_shot.url }}.
Как сделать переменную доступной во всех шаблонах?¶
Временами ваши шаблоны используют одинаковый код. Общим примером можно считать динамически создаваемые меню. На первый взгляд выглядит разумным просто добавить общий словарь в контекст шаблона.
Лучшим решением будет использование RequestContext. Подробности можно посмотреть в Классы наследники Context: RequestContext.