Форматирование 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
может вызвать это.