HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: orm, django-extensions, ipython, shell_plus, runserver_plus, werkzeug, django, manage.py shell, manage.py runserver, трейсбек, activatormodel, timestampedmodel, modified, created, foreignkeyautocompleteadmin, foreignkey</p>
1 <p>Теги: orm, django-extensions, ipython, shell_plus, runserver_plus, werkzeug, django, manage.py shell, manage.py runserver, трейсбек, activatormodel, timestampedmodel, modified, created, foreignkeyautocompleteadmin, foreignkey</p>
2 <p>Давайте рассмотрим самое полезное, что есть в составе модуля<strong>django-extensions</strong>- набора полезных дополнений к любому проекту на Django.</p>
2 <p>Давайте рассмотрим самое полезное, что есть в составе модуля<strong>django-extensions</strong>- набора полезных дополнений к любому проекту на Django.</p>
3 <h2>shell_plus, продвинутая версия manage.py shell</h2>
3 <h2>shell_plus, продвинутая версия manage.py shell</h2>
4 <p>От обычной команды отличается тем, что автоматически импортирует все модели и необходимые функции для работы с<strong>ORM</strong>(например,<strong>Q</strong>и<strong>Avg</strong>). Рекомендуется использовать вместе с<strong>ipython</strong>, тогда будет автодополнение, подсветка и сохранение истории при перезапуске интерпретатора. Работает даже с кастомными пользовательскими моделями: если у вас переопределена модель<strong>User</strong>,<strong>shell_plus</strong>импортирует правильную.</p>
4 <p>От обычной команды отличается тем, что автоматически импортирует все модели и необходимые функции для работы с<strong>ORM</strong>(например,<strong>Q</strong>и<strong>Avg</strong>). Рекомендуется использовать вместе с<strong>ipython</strong>, тогда будет автодополнение, подсветка и сохранение истории при перезапуске интерпретатора. Работает даже с кастомными пользовательскими моделями: если у вас переопределена модель<strong>User</strong>,<strong>shell_plus</strong>импортирует правильную.</p>
5 <h2>runserver_plus, продвинутая версия manage.py runserver</h2>
5 <h2>runserver_plus, продвинутая версия manage.py runserver</h2>
6 <p>Продвинутость заключается в том, что под капотом используется<strong>Werkzeug</strong>для рендеринга страницы ошибки в случае пятисотых статусов. Вместо привычной жёлтой страницы ошибки Django с трейсбеком и значением некоторых переменных, показывается версия<strong>Werkzeug</strong>, которая позволяет запускать любой код на Python в тех фреймах, в которых произошли ошибки. Прямо в браузере! Радикально ускоряет поиск ошибки.</p>
6 <p>Продвинутость заключается в том, что под капотом используется<strong>Werkzeug</strong>для рендеринга страницы ошибки в случае пятисотых статусов. Вместо привычной жёлтой страницы ошибки Django с трейсбеком и значением некоторых переменных, показывается версия<strong>Werkzeug</strong>, которая позволяет запускать любой код на Python в тех фреймах, в которых произошли ошибки. Прямо в браузере! Радикально ускоряет поиск ошибки.</p>
7 <h2>Набор базовых моделей</h2>
7 <h2>Набор базовых моделей</h2>
8 <p>Например,<strong>ActivatorModel</strong>со статусом и датой активации или<strong>TimeStampedModel</strong>с полями<strong>created</strong>и<strong>modified</strong>. Случаи очень частые, поэтому и модели очень полезные. Всё равно их аналоги есть в любом боевом проекте на Django.</p>
8 <p>Например,<strong>ActivatorModel</strong>со статусом и датой активации или<strong>TimeStampedModel</strong>с полями<strong>created</strong>и<strong>modified</strong>. Случаи очень частые, поэтому и модели очень полезные. Всё равно их аналоги есть в любом боевом проекте на Django.</p>
9 <h2>Набор расширений для админки</h2>
9 <h2>Набор расширений для админки</h2>
10 <p>Например,<strong>ForeignKeyAutocompleteAdmin</strong>, который позволяет превратить любое поле<strong>ForeignKey</strong>в админке не просто в выпадашку, а в поле с автодополнением и поиском по указанным полям.</p>
10 <p>Например,<strong>ForeignKeyAutocompleteAdmin</strong>, который позволяет превратить любое поле<strong>ForeignKey</strong>в админке не просто в выпадашку, а в поле с автодополнением и поиском по указанным полям.</p>
11 <p>Как видите, эти утилиты достаточно универсальны и пригодятся почти в любом проекте, поэтому<strong>django-extensions</strong>- один из модулей, которые можно сразу устанавливать на старте проекта.</p>
11 <p>Как видите, эти утилиты достаточно универсальны и пригодятся почти в любом проекте, поэтому<strong>django-extensions</strong>- один из модулей, которые можно сразу устанавливать на старте проекта.</p>
12 <p><em>Есть вопрос? Напишите в комментариях!</em></p>
12 <p><em>Есть вопрос? Напишите в комментариях!</em></p>
13  
13