mh-*_*jah 2 code-formatting django-templates visual-studio-code vscode-extensions prettier
我做了很多搜索来找到一种方法来创建或覆盖 vscode 的现有扩展来为 django-template 进行缩进,但什么也没有,创建也没有成功。最佳答案仍然使用此设置:
"files.associations": {
"**/*.html": "html",
"**/templates/**/*.html": "django-html",
}
"[django-html]": {
"editor.defaultFormatter": "HookyQR.beautify",
}
"beautify.language": {
"html": ["django-html"]
},
Run Code Online (Sandbox Code Playgroud)
和这个扩展:Dajngo (Baptiste Darthenay)& beautify。但 django-template 语言没有缩进,只有 HTML 标签会缩进。我尝试覆盖Djagno扩展以使其成为可能,是的,它会插入一些缩进,但保存代码后,Beautify会自动格式化代码并删除该缩进,所以结果总是像这样:
<ul class="navbar-nav nav-flex-icons {% if LANGUAGE_BIDI %} mr-auto {% endif %}">
{% get_available_languages as languages %}
{% for lang_code, lang_name in languages %}
{% if lang_code != LANGUAGE_CODE %}
{% language lang_code %}
<li class="nav-item">
<a class="nav-link lang-setter" data-lang-code="{{ lang_code }}">
{{ lang_code|language_name_local }}
</a>
</li>
{% endlanguage %}
{% endif %}
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
丑陋的模板。我还提供了所需的缩进规则,但我找不到一种方法来为 vscode 代码格式化程序(例如 beautify 或 prettier)强制执行此规则。
"indentationRules": {
"increaseIndentPattern": "((\\<)(body|address|blockquote|dd|div|dl|dt|tr|tbody|thead|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|a|menu|pre|table|button|a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var))|(\\{\\%)\\s*(autoescape|block|blocktrans|blocktranslate|comment|for|empty|if|elif|else|ifchanged|ifequal|ifnotequal|from|low|regroup|ssi|spaceless|templatetag|widthratio|with|verbatim|thumbnail)",
"decreaseIndentPattern": "((\\<\\/)(.*)*(\\>))|((\\{\\%)\\s*(empty|elif|else|end(autoescape|block|blocktrans|blocktranslate|comment|for|if|ifchanged|ifequal|ifnotequal|spaceless|with|verbatim|thumbnail)))"
}
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,我发现这个有用的项目https://github.com/Riverside-Healthcare/djlint
要在 vscode 中安装它(我建议将其安装在虚拟环境中):
pip install djlint
Run Code Online (Sandbox Code Playgroud)
一旦完成。我使用保存时运行的扩展并在 settings.json 中添加类似的配置
"emeraldwalk.runonsave": {
"commands": [
{
"match": "\\.html$",
"isAsync": true,
"cmd": "./path/to/venv/bin/djlint ${file} --reformat --quiet"
}
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1691 次 |
| 最近记录: |