django模板

时间:2017-02-10 23:55:20

标签: html django django-templates visual-studio-code

我喜欢保存autoformat的VSCode,直到它搞砸了我的模板代码。

它错误地将我的django模板语法格式化为一个行代码(有时真的很长)。所以没有这个代码

{% for row in 'ABCDEFGH' %}
<tr>
  {% for col in '123456789012345' %}
    <td>
      {% with forloop.counter|stringformat:"s" as counter %}
        {% with row|add:counter as seat_num %}
          {% if seat_num not in oc_seats %}
            <input type="checkbox" value="{{ row }}{{ forloop.counter }}" name="seats">
          {% endif %}
          <br> {{ seat_num }} 
        {% endwith %}
      {% endwith %}
     </td>    
   {% endfor %}
</tr>
{% endfor %}

我最终得到了这段代码

{% for row in 'ABCDEFGH' %}
<tr>
  {% for col in '123456789012345' %}
  <td style="text-align: center; border: 1px solid #aaa;">
    {% with forloop.counter|stringformat:"s" as counter %} {% with row|add:counter as seat_num %} {% if seat_num not in oc_seats %}
    <input type="checkbox" value="{{ row }}{{ forloop.counter }}" name="seats"> {% endif %} {{ seat_num }} {% endwith %} {% endwith %}
  </td>
  {% endfor %}
</tr>
{% endfor %}

我尝试通过将用户设置更改为{"editor.formatOnSave": false}来禁用保存格式,但仍然没有运气。

我可以使用任何插件或配置来使其更好用吗?

PS: 我在Sierra MacOSx上使用VSCode 1.9版

8 个答案:

答案 0 :(得分:3)

你可以禁用默认的html格式化程序,转到文件&gt;偏好&gt;用户或工作区设置,您将在HTML设置中找到:

// Enable/disable default HTML formatter (requires restart)
  "html.format.enable": true,

我认为VSCode使用js-beautify作为默认格式化程序,您可以使用beautify extension覆盖项目目录中的.jsbeautifyrc设置

答案 1 :(得分:3)

我改用了美化扩展程序,该扩展程序在漂亮的程序仍排在一行上时立即起作用。在此堆栈溢出kimanihuon上,功劳归于page

  1. 将以下内容添加到settings.json
npm install --save @babel/runtime
  1. 安装美化功能,然后将以下内容添加到settings.json
"files.associations": {
   "**/*.html": "html",
   "**/templates/*/*.html": "django-html",
   "**/templates/*": "django-txt",
   "**/requirements{/**,*}.{txt,in}": "pip-requirements"
},

"emmet.includeLanguages": {
   "django-html": "html"
},
  1. 以防万一重启VSCode

答案 2 :(得分:2)

有同样的问题,找到了一个帖子,其中该人禁用了JS-CSS-HTML Formatter扩展名(https://stackoverflow.com/a/42100808/4812548)并修复了该问题。在我的测试,它似乎也有效。希望有所帮助

答案 3 :(得分:1)

将文件的语言模式更改为“ Django / HTML”也将阻止VSCode自动格式化。

答案 4 :(得分:0)

Alexa在her answer中有一个优点。需要在“ Django / HTML”中更改文件模式,以防止VS CODE对其进行格式化。

如何更改文件模式?

一种快速的解决方案是使用名为vscode-Django的this extension并按照其文档中所述调整设置。

"files.associations": {
    "**/templates/*.html": "django-html",
    "**/templates/*": "django-txt"
}

使用这些设置,位于template文件夹中的任何文件都将被视为Django模板文件,并且不受HTML自动格式设置的影响。

PS:扩展程序仍处于预览模式,希望它会随着时间的推移变得更好。

答案 5 :(得分:0)

在VSCode的settings.json中,添加以下内容:emmet.includeLanguages": {"django-html": "html"}

答案 6 :(得分:0)

您可以禁用某些语言的格式化选项:

转到“扩展名”,然后进入“ Prettier”的“扩展名设置”,并为这种情况添加 django-html

disable language - prettier

答案 7 :(得分:0)

VSCode 中的 Prettier 是我遇到这种情况的罪魁祸首。我让它在我的 settings.json 中停止格式化。

"files.associations": {
   "**/*.html": "html",
   "**/templates/*/*.html": "django-html",
   "**/templates/*": "django-txt",
   "**/requirements{/**,*}.{txt,in}": "pip-requirements"
},    
"[django-html]": {
   "editor.defaultFormatter": "batisteo.vscode-django"
},

files.associations 将模板的语言模式设置为 django-html。 [django-html] 设置该语言模式的设置。在撰写本文时,batisteo.vscode-django 中的格式化程序对我没有任何作用(因此它的位置与 null 相同),但我将其留在那里以防 django 扩展曾经这样做。< /p>