Использование вкладышей

djLint включает в себя множество правил для проверки стиля и валидности ваших шаблонов. Используйте все преимущества линтера, настроив его на использование предустановленного профиля для выбранного вами языка шаблонов.

djlint /path/to/templates --lint

# with custom extensions
djlint /path/to/templates -e html.dj --profile=django

# or to file
djlint /path/to/this.html.j2 --profile=jinja

Пользовательские правила

Создайте файл .djlint_rules.yaml рядом с вашим pyproject.toml. Правила могут быть добавлены в этот файл, и djLint подхватит их.

Хорошее правило выглядит следующим образом:

- rule:
name: T001
message: Найти трихотилломанию
flags: re.DOTALL|re.I
patterns:
- трихотилломанию

Кодовые шаблоны

Первая буква кода соответствует схеме:

  • D: применяется специально для Django
  • H: применяется к html
  • J: применяется специально для Jinja
  • M: применяется специально для Handlebars
  • N: применяется специально для Nunjucks
  • T: применяется в целом к шаблонам

Правила

КодЗначение
D004(Django) Статические урлы должны следовать шаблону {% static path/to/file %}.
D018(Django) Внутренние ссылки должны использовать шаблон {% url ... %}.
H005Html-тег должен иметь атрибут lang.
H006Тег img должен иметь атрибуты height и width.
H007<!DOCTYPE ... > должен присутствовать перед тегом html.
H008Атрибуты должны быть заключены в двойные кавычки.
H009Имена тегов должны быть в нижнем регистре.
H010Имена атрибутов должны быть в нижнем регистре.
H011Значения атрибутов должны быть заключены в кавычки.
H012Вокруг атрибута = не должно быть пробелов.
H013Тег img должен иметь атрибуты alt.
H014Более 2 пустых строк.
H015После тегов h следует перевод строки.
H016Отсутствие тега title в html.
H017Тег должен быть самозакрывающимся.
H019Замените javascript:abc() на событие on_ и реальный url.
H020Найдена пустая пара тегов. Рассмотрите возможность удаления.
H021Следует избегать инлайн-стилей.
H022Используйте HTTPS для внешних ссылок.
H023Не используйте ссылки на сущности.
H024Опускайте тип в скриптах и стилях.
H025Тег кажется бесхозным.
H026Пустые теги id и class могут быть удалены.
H029Рассмотрите возможность использования строчных значений метода формы.
H030Рассмотрите возможность добавления мета-описания.
H031Рассмотрите возможность добавления мета-ключевых слов.
H033В действии формы обнаружен лишний пробел.
J004(Jinja) Статические урлы должны следовать шаблону {{ url_for('static'...)}}.
J018(Jinja) Внутренние ссылки должны использовать шаблон {% url ... %}.
T001Переменные должны быть заключены в один пробел. Например: {{ this }}
T002В тегах следует использовать двойные кавычки. Ex {% extends "this.html" %}
T003Конечный блок должен иметь имя. Например: {% endblock body %}.
T027В синтаксисе шаблона найдена незакрытая строка.
T028Рассмотрите возможность использования тегов без пробелов внутри значений атрибутов. {%- if/for -%}
T032В тегах шаблона обнаружены лишние пробелы.
T034Вы намеревались использовать {% … %} вместо {% … }%?

Добавление правил

Мы приветствуем запросы с новыми правилами!

Хорошее правило состоит из

  • Name
  • Code
  • Message - Сообщение для отображения при обнаружении ошибки.
  • Flags - Флаги регекса. По умолчанию используется re.DOTALL. например: re.I|re.M
  • Patterns - regex-выражения, которые найдут ошибку.
  • Exclude - Необязательный список профилей, из которых нужно исключить правило.

Пожалуйста, включите тест для проверки правила.