diff --git a/etpgrf_site/blog/templates/blog/tmp.html b/etpgrf_site/blog/templates/blog/tmp.html index 595226c..b083b67 100644 --- a/etpgrf_site/blog/templates/blog/tmp.html +++ b/etpgrf_site/blog/templates/blog/tmp.html @@ -80,8 +80,8 @@ python manage.py hello Иван
Привет, Иван!
В моём проекте, DQ – коллекция цитат. Место для вдумчивого чтения, контент был частично обработан с помощью Типографа Муравьёа, частично вручную. И вот я установил и настроил etpgrf (тем более что Типограф Муравьева «почил в бозе», да и до того не обновлялся с 2018 года). Все новые цитаты типографируются через etpgrf, но что делать со старыми? Их сотни, и открывать и «пересохранаять» каждую вручную — это адский труд. Вот тут на помощь и приходит Custom Management Command.
-Вот как я это реализовал: в web/management/commands/reprocess_typography.py:
+В моём проекте, DQ – коллекция цитат: место для вдумчивого чтения, контент был частично обработан с помощью Типографа Муравьёа, частично вручную. И вот я установил и настроил etpgrf (тем более что Типограф Муравьёва «почил в бозе», да и до того не обновлялся с 2018 года). Все новые цитаты типографируются через etpgrf, но что делать со старыми? Их сотни, и открывать и «пересохранаять» каждую вручную — это адский труд. Вот тут на помощь и приходит Custom Management Command.
+Вот как я это реализовал. В web/management/commands/reprocess_typography.py:
from django.core.management.base import BaseCommand
from web.models import TbDictumAndQuotes
@@ -150,14 +150,14 @@ class Command(BaseCommand):
self.stdout.write(self.style.SUCCESS(f"\nГотово!"))
- Возможно вы заметили, что в моем проекте для контента есть два поля: szContent и szContentHTML. В первом хранится «сырой» текст, во втором — результат типографирования. В вашем проекте, скорее всего только одно поле для контента, но по сути это ничего не меняет.
Возможно вы заметили, что в моем проекте для контента есть два поля: szContent и szContentHTML. В первом хранится «сырой» текст, во втором — результат типографирования. В вашем проекте, скорее всего, только одно поле для контента, но по сути это ничего не меняет.
Еще интересные фишки, которые использовались при типографировании:
self.stdout.write вместо print – позволяет Django перехватывать вывод (например, для тестов) и корректно работать с кодировками.self.style.SUCCESS и self.style.ERROR – раскрашивает текст в консоли (зеленый/красный) и это очень удобно для визуального восприятия логов.update_fields – позволяет перезаписывать не всю модель целиком (что могло бы затереть изменения, сделанные кем-то другим в ту же секунду), а обновляем только конкретные поля.update_fields — позволяет перезаписывать не всю модель целиком (что могло бы затереть изменения, сделанные кем-то другим в ту же секунду), а обновляем только конкретные поля.Теперь, чтобы типографировать весь контент, нам достаточно одной строку в терминале, и Django сделает всю грязную работу за нас (не забудьте инициировать виртуальное окружение вашего проекта).
Тестовый прогон (безопасно, ничего не сохраняет):