VSCode用换行符来打破Django模板标签

5m1hhzi4  于 2023-05-19  发布在  Go
关注(0)|答案(6)|浏览(125)

问题:

{% extends 'base.html' %} {% block title %} Dashboard {% endblock %} {% block pagetitle %}

成为

{% extends 'base.html' %} {% block title %} Dashboard {% endblock %} {% block
pagetitle %}

请注意,{% tag %}被新行打断。这会导致django模板的语法错误。
我已经尝试了大多数顶级的django模板扩展,这并不能解决这个问题。
我也尝试了这些设置:

"[html]": {
        "editor.formatOnSave": false,
    },
    "html.format.wrapLineLength": 0,
    "html.format.enable": false,
    "prettier.disableLanguages": ["html"]

期望行为:

1.自动格式化 *.html文件,同时保留django模板标签,而不是用换行符打破它们。
1.次优(但可接受)行为:不要格式化 *.html文件。

aiqt4smr

aiqt4smr1#

我也遇到了同样的问题,我发现解决这个问题的唯一方法是禁用默认的HTML格式化程序。不幸的是,我没有找到一种方法来使它正确地格式化Django模板标记。你可以做同样的事情,如果你去VS代码首选项>设置>用户>扩展> HTML和取消选中'启用/禁用默认HTML格式化'。

ldfqzlk8

ldfqzlk82#

我通过以下建议解决了这个问题:https://stackoverflow.com/a/73892745/1257347
TLDR:安装djLint扩展(记住执行$ pip install djlint

oxf4rvwz

oxf4rvwz3#

我通过简单地在被破坏的{% tag %}之间添加{{""}}来使它工作。
示例:

{% extends 'main/base.html' %} {% block title_block %}Homepage{% endblock%}
{{""}} {%block style_ref_block%}{%endblock%} {{""}} {% block body_block %}
4ioopgfo

4ioopgfo4#

This不适合我。
我发现的破解方法是将vscode语言设置为jinja,而不是自动检测的html
reference

vktxenjb

vktxenjb5#

我也刚刚经历了django模板标签上的vs-code错误行为(即删除花括号)。
我不喜欢仅仅为了支持模板而禁用HTML格式的想法。vs-code首选项/设置/扩展/HTML:禁用(取消选中)“HTML>Format:Enable”)。这可以说是一种倒退,但它确实阻止了vs-code的错误行为。
相反,我选择安装(与代码首选项/扩展)'Django'扩展,由Baptiste Darthenay。这是一种更好的方式,因为它可以优雅地工作,保留了原生与代码的HTML格式,并包括一组很好的django片段,这可以在嵌入模板代码时节省我的按键。Tada!
顺便说一句,在找到Baptiste的真棒扩展之前,我还尝试启用vs-code HTML格式,并启用'HTML>Format:Templating',它承诺“荣誉django和其他模板语言标签”;它没有。

oxalkeyp

oxalkeyp6#

打开settings.json并添加这一行。对我很有效

"[django-html]": {
"editor.formatOnSave": false

},

相关问题