툴이 소스코드를 저장할 때마다 알아서 코드 스타일을 깔끔하게 맞춰준다면? 너무 편리하겠죠? ;-) // 장고에서 파이썬 코드를 위한 `black`유틸리티를 적용하고, 장고 템플릿 코드를 위한 `djlint`유틸리티를 적용하는 방법에 대해서 다뤄보겠습니다.
아래에서는 파이참에서의 적용예시를 다루고 있으나, black
/djlint
는 명령행 유틸리티이기에 명령행에서도 사용가능하며, git의 pre-commit 도구로 등록하실 수도 있습니다. Visual Studio Code에서도 물론 사용가능합니다.
PyCharm Professional에는 기본에 File Watchers
가 설치되어있습니다.
PyCharm Community 에서는 File Watchers 플러그인을 설치하시면, 동일한 UI로 설정하실 수 있습니다. 파이참 Settings의 Plugins 메뉴에서 file watchers
를 검색하셔서 설치하실 수 있습니다.
제보해주신 끙 님에게 감사드립니다. :-)
black
적용하기¶black은 Python 코드 포매터 도구 중 하나입니다. black은 PEP 8 스타일 가이드를 따르며, 코드 가독성과 유지 보수성을 높이는 데 도움을 줍니다.
black
black 파일경로
--line-length
옵션 : 1줄 최대 허용 문자수를 지정할 수 있습니다. 디폴트로 88
입니다.--target-version
옵션 : 파이썬 타겟버전을 지정할 수 있습니다. 생략하면 project.toml
내 메타정보를 참조하거나 자동으로 탐지합니다.black
설치 후에, 설치된 black.exe
의 절대경로를 알아내어야 합니다. 파워쉘에서는 다음과 같이 Get-Command
명령으로 알아내실 수 있으며, 명령프롬프트에서는 where
명령으로 알아내실 수 있습니다.
파워쉘> Get-Command black | Select-Object -ExpandProperty Path
C:\Projects\my-favorite-django\venv\Scripts\black.exe
위에서 알아낸 C:\Projects\my-favorite-django\venv\Scripts\black.exe
경로를 따로 복사해둡니다.
이제 파이참 File -> Settings 메뉴 Tools -> File Watchers 메뉴에서, +
-> <custom>
항목을 선택해주세요.
각 항목은 아래와 같이 기입해주세요.
black
으로 지정했습니다.Python
을 선택해주세요.black 파일경로
포맷으로 실행을 하려 합니다. 그럼 아래 스크린샷과 같이 $FilePath$
매크로 문자열을 입력해주세요.$FilePath$
매크로 문자열을 직접 타이핑하지 않고, 우측의 +
를 누르시면 사용 가능한 매크로 목록이 나옵니다. 이 목록에서 $FilePath$
를 선택하셔도 됩니다.--line-length 120
옵션을 지정하실려면 --line-length 120 $FilePath$
로 입력하시면 됩니다.$ProjectFileDir$
를 지정해주세요OK 버튼을 눌러 저장해주세요.
지금부터 프로젝트 내 파이썬 소스코드 파일을 수정하시고, 저장하시면 black에 의해 소스코드의 포맷이 자동으로 맞춰짐을 확인하실 수 있습니다.
아래 코드의 경우
a=1
b= 2
for i in range(1, 10, 2):
print(a,b,a*b)
다음과 같이 자동 변환됩니다. ;-)
a = 1
b = 2
for i in range(1, 10, 2):
print(a, b, a * b)
아래와 같이 # fmt: off
로 지정한 줄부터 자동포맷팅이 적용되지않고, #fmt: on
을 지정한 줄부터 다시 자동포맷팅이 적용됩니다.
a=1
# fmt: off
d= 4
# fmt: on
djlint
적용하기¶djlint
의 적용방법은 위 black
과 동일합니다.
djlint
djlint 파일경로 --reformat --quiet --extension "html.dj" --profile django --preserve-blank-lines
djlint
설치 후에, 설치된 djlint.exe
유틸리티의 절대경로를 알아내어야 합니다. 파워쉘에서는 다음과 같이 Get-Command
명령으로 알아내실 수 있으며, 명령프롬프트에서는 where
명령으로 알아내실 수 있습니다.
파워쉘> Get-Command djlint | Select-Object -ExpandProperty Path
C:\Projects\my-favorite-django\venv\Scripts\djlint.exe
위에서 알아낸 C:\Projects\my-favorite-django\venv\Scripts\djlint.exe
경로를 따로 복사해둡니다.
이제 파이참 File -> Settings 메뉴 Tools -> File Watchers 메뉴에서, +
-> <custom>
항목을 선택해주세요.
각 항목은 아래와 같이 기입해주세요.
djlint
로 지정했습니다.HTML
을 선택해주세요.djlint.exe
절대경로를 붙여넣기해주세요.djlint 파일경로 --reformat --quiet --extension "html.dj" --profile django --preserve-blank-lines
포맷으로 실행을 하려 합니다. 그럼 아래 스크린샷과 같이 $FilePath$ --reformat --quiet --extension "html.dj" --profile django --preserve-blank-lines
문자열을 입력해주세요.$FilePath$
매크로 문자열을 직접 타이핑하지 않고, 우측의 +
를 누르시면 사용 가능한 매크로 목록이 나옵니다. 이 목록에서 $FilePath$
를 선택하셔도 됩니다.$ProjectFileDir$
를 지정해주세요OK 버튼을 눌러 저장해주세요.
*.html
확장자를 가지는 아래 코드의 경우
<html>
<head><meta charset="utf8" /><title>test djlint</title></head>
<body><h1>HELLO djlint</h1></body>
</html>
다음과 같이 자동변환됩니다. ;-)
<html>
<head>
<meta charset="utf8" />
<title>test djlint</title>
</head>
<body>
<h1>HELLO djlint</h1>
</body>
</html>
공식문서의 Ignoring Code 문서를 참고해보시면, 다양한 포맷이 지원됩니다.
HTML 주석 스타일
<!-- djlint:off -->
<bad html to ignore> <!-- djlint:on --></bad>
장고 템플릿 1줄 주석 스타일
{# djlint:off #} <bad html to ignore> {# djlint:on #}</bad>
장고 템플릿 여러 줄 주석 스타일
{% comment %} djlint:off {% endcomment %}
<bad html to ignore> {% comment %} djlint:on {% endcomment %}</bad>
이 외에도 다양한 연동방법에 대해서 공식문서에서 다루고 있으니, 꼭 살펴보세요. ;-)
git commit 과정에서 black을 자동으로 수행하고 싶으시다면, (kakaobrain) 효율적인 파이썬 코딩 컨벤션 관리를 위한 pre-commit 사용해보기 - Ted 영상을 참고해보세요.
댓글