Настройка Visual Studio Code для Django

от автора

TL;DR
pip install django black isort pylint django-pylint mypy django-stubs

settings.json

{     "editor.formatOnSave": true,     "python.linting.lintOnSave": true,     "python.linting.enabled": true,     "python.linting.pylintEnabled": true,     "python.linting.pylintArgs": [         "--load-plugins",         "pylint_django",         "--django-settings-module=core.settings",         "--max-line-length=120"     ],     "python.formatting.provider": "black",     "python.formatting.blackArgs": [         "--line-length=120"     ],     "editor.codeActionsOnSave": {         "source.organizeImports": true     },     "python.linting.mypyEnabled": true }

mypy.ini

[mypy] plugins =     mypy_django_plugin.main  [mypy.plugins.django-stubs] django_settings_module = "myproject.settings"

.isort.cfg

[tool.isort] profile = "black"

Настройка Visual Studio Code для работы над проектами Django немного отличается от типичного сетапа для pure Python проектов. Например, в Django мало пользы от mypy, так как он не поддерживает типы Django. Точно также дела обстоят с линтерами, которые, без предварительной настройки, работают с кодом Django неправильно.

Эти проблемы можно решить файлами конфигураций соответствующих инструментов, но я использую готовые плагины для mypy и pylint.

Что подключим

  • black – пакет для автоматического форматирования кода

  • pylint – статический анализатор кода

  • isort – пакет для сортировки объявлений import

  • mypy – пакет для проверки статических типов

Плагины

  • django-pylint – плагин pylint, улучшающий анализ кода Django.

  • django-stubs – плагин mypy, предоставляющий более точные статические типы для Django.

Новый проект Django

Начну с нуля и буду двигаться к настройкам Visual Studio Code.

Установка Django и зависимостей

Я предпочитаю разрабатывать новые проекты в контейнерах Docker с помощью расширения Visual Studio Code Remote Development. Также можно использовать виртуальное окружение, активировать его и выполнить команду:

pip install django black isort pylint django-pylint mypy django-stubs

Новый проект Django

Для сетапа достаточно стартового проекта Django, который можно получить следующей командой:

django-admin startproject core .

Получаем структуру директорий:

. ├── core │   ├── asgi.py │   ├── __init__.py │   ├── settings.py │   ├── urls.py │   └── wsgi.py ├── manage.py

Я не буду создавать новое приложение Django. Вместо этого я продолжу интеграцию инструментов в этот проект, а вы позднее добавите свое приложение в уже готовую, удобную среду разработки.

Настройка Visual Studio Code

Настройки, которые мы хотим применить к проекту Django, не работоспособны без расширения Python для Visual Studio Code.

От проекта к проекту конфигурация инструментов и сами инструменты могут меняться. Поэтому Visual Studio Code разделяет настройки проектов на пользовательские (глобальные) и настройки рабочих пространств. Настройки рабочих пространств привязаны к конкретному проекту. Их можно изменять предварительно создав в корне проекта директорию .vscode с файлом settings.json внутри. В этом файле определяются настройки для рабочего пространства:

{     "editor.formatOnSave": true,     "python.formatting.provider": "black",     "python.formatting.blackArgs": [         "--line-length=120"     ],     "python.linting.enabled": true,     "python.linting.lintOnSave": true,     "python.linting.pylintEnabled": true,     "python.linting.pylintArgs": [         "--load-plugins",         "pylint_django",         "--django-settings-module=core.settings",         "--max-line-length=120"     ],          "editor.codeActionsOnSave": {         "source.organizeImports": true     },     "python.linting.mypyEnabled": true }

Включаем black

Форматировать код во время сохранения файла (Ctrl+S):

"editor.formatOnSave": true,

Установить провайдер форматирования black:

"python.formatting.provider": "black",

Black использует длину строки умолчанию в 88 символов. Нужно перезаписать это значение согласно принятому для Django соглашению:

"python.formatting.blackArgs": [         "--line-length=120"     ],

Включаем pylint

Включаем возможности линтинга:

"python.linting.enabled": true,

Включаем линтинг во время сохранения файла (Ctrl+S):

"python.linting.lintOnSave": true,

Включаем pylint:

"python.linting.pylintEnabled": true,

Интегрируем плагин django-pylint и меням длину линии:

"python.linting.pylintArgs": [         "--load-plugins",         "pylint_django",         "--django-settings-module=core.settings",         "--max-line-length=120"     ],

Включаем isort

"editor.codeActionsOnSave": {         "source.organizeImports": true     },

Совместимость с black

black имеет встроенную сортировку импортов, отличную от isort. Чтобы два инструмента не конфликтовали, настроим isort на использование сортировки black. Для этого пишем в файл isort.cfg в корне проекта:

[settings] profile=black

Включаем mypy

"python.linting.mypyEnabled": true

Пишем в файл mypy.ini в корне проекта:

[mypy] plugins =     mypy_django_plugin.main  [mypy.plugins.django-stubs] django_settings_module = "myproject.settings"

Готово!

Попробуйте начать писать новое приложение с моим сетапом, надеюсь вам понравится!

Если вам понравилась статья, подписывайтесь на мой канал в телеграм, где я пишу про Python и не только.


ссылка на оригинал статьи https://habr.com/ru/post/701800/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *