Форматирование Python в VSCode разрушает шаблоны Django

Я пишу приложение Django и использую следующую конфигурацию в VSCode (settings.json) для автоматического форматирования моего кода Python (я также использую расширение Django VSCode):

{
    "liveshare.authenticationProvider": "GitHub",
    "editor.fontSize": 16,
    "files.trimFinalNewlines": true,
    "files.trimTrailingWhitespace": true,
    "files.insertFinalNewline": true,
    "html.format.endWithNewline": true,
    "files.exclude": {
        "**/__pycache__": true
    },
    "explorer.confirmDragAndDrop": false,
    "editor.formatOnSave": true,
    "git.confirmSync": false,
    "window.zoomLevel": -1,
    "python.linting.flake8Enabled": true,
    "python.formatting.provider": "black",
    "python.linting.flake8Args": [
        "--ignore=E501,E266,W503"
    ],
    "files.associations": {
        "**/*.html": "html",
        "**/templates/**/*.html": "django-html",
        "**/templates/**/*": "django-txt",
        "**/requirements{/**,*}.{txt,in}": "pip-requirements",
        "*.html": "django-html"
    },
    "emmet.includeLanguages": {"django-html": "html"},
}

Хотя форматирование в файлах Python работает как ожидалось, оно, похоже, вмешивается и в мои шаблоны Django и разрушает их.

Например, следующий шаблон...

{% extends "base.html" %}

{% load martortags %}

{% block title %}MyBlog - {{ object.title }}{% endblock title %}

{% block content %}
<ol>
{% for post in object_list %}
    <li>
        <a href="{{ post.get_absolute_url }}">{{ post.title }}</a>
    </li>
{% endfor %}
</ol>
{% endblock content %}

... после сохранения становится таким:

{% extends "base.html" %} {% load martortags %} {% block title %}MyBlog - {{
object.title }}{% endblock title %} {% block content %}
<ol>
  {% for post in object_list %}
  <li><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></li>
  {% endfor %}
</ol>
{% endblock content %}

Как видно из settings.json, я пытался следовать инструкциям в документации по расширению Django VSCode, но это не сработало. На самом деле, ничего не меняется, независимо от того, существуют или нет настройки "files.associations" и "emmet.includeLanguages" в settings.json.

Как я могу отделить форматирование .py файлов (правильно идентифицируемых VSCode как Python файлы) от форматирования .html файлов (правильно идентифицируемых VSCode как Django Template файлы) и, возможно, использовать обычный HTML-форматер для последнего?

Форматировщик black Python не отформатирует .html файл.

Я не уверен, какой формат вы выбрали для файла .html. Вы можете взглянуть на User settings.json попытаться найти это:

  "[html]": {
    "editor.defaultFormatter": xxx
  }

Вы можете щелкнуть правой кнопкой мыши редактор и выбрать Format Document with, чтобы узнать, какой формат вызвал это. Похоже, что расширение Prettier Code formatter может вызвать это.

Вернуться на верх