- D: applies specifically to Django
- H: applies to html
- J: applies specifically to Jinja
- M: applies specifically to Handlebars
- N: applies specifically to Nunjucks
- T: applies generally to templates
djLint includes many rules to check the style and validity of your templates. Take full advantage of the linter by configuring it to use a preset profile for the template language of your choice.
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
Create a file .djlint_rules.yaml
alongside your pyproject.toml
. Rules can be added to this files and djLint will pick them up.
A good rule follows this pattern:
- rule:
name: T001
message: Find Trichotillomania
flags: re.DOTALL|re.I
patterns:
- Trichotillomania
The first letter of a code follows the pattern:
Code | Meaning |
---|---|
D004 | (Django) Static urls should follow {% static path/to/file %} pattern. |
D018 | (Django) Internal links should use the {% url ... %} pattern. |
H005 | Html tag should have lang attribute. |
H006 | img tag should have height and width attributes. |
H007 | <!DOCTYPE ... > should be present before the html tag. |
H008 | Attributes should be double quoted. |
H009 | Tag names should be lowercase. |
H010 | Attribute names should be lowercase. |
H011 | Attribute values should be quoted. |
H012 | There should be no spaces around attribute = . |
H013 | img tag should have alt attributes. |
H014 | More than 2 blank lines. |
H015 | Follow h tags with a line break. |
H016 | Missing title tag in html. |
H017 | Tag should be self closing. |
H019 | Replace javascript:abc() with on_ event and real url. |
H020 | Empty tag pair found. Consider removing. |
H021 | Inline styles should be avoided. |
H022 | Use HTTPS for external links. |
H023 | Do not use entity references. |
H024 | Omit type on scripts and styles. |
H025 | Tag seems to be an orphan. |
H026 | Empty id and class tags can be removed. |
H029 | Consider using lowercase form method values. |
H030 | Consider adding a meta description. |
H031 | Consider adding meta keywords. |
H033 | Extra whitespace found in form action. |
J004 | (Jinja) Static urls should follow {{ url_for('static'..) }} pattern. |
J018 | (Jinja) Internal links should use the {% url ... %} pattern. |
T001 | Variables should be wrapped in a single whitespace. Ex: {{ this }} |
T002 | Double quotes should be used in tags. Ex {% extends "this.html" %} |
T003 | Endblock should have name. Ex: {% endblock body %} . |
T027 | Unclosed string found in template syntax. |
T028 | Consider using spaceless tags inside attribute values. {%- if/for -%} |
T032 | Extra whitespace found in template tags. |
T034 | Did you intend to use {% … %} instead of {% … }%? |
We welcome pull requests with new rules!
A good rule consists of
Please include a test to validate the rule.