Django ํ๊ฒฝ์์ ํ ์คํธ๋ฅผ ์คํํ ๋ ๋ค์ ๊ฒฝ๊ณ ๋ฅผ ๋ง๋ฌ์ต๋๋ค.
/path/to/lib/python3.7/site-packages/compressor/filters/base.py:115: RemovedInDjango31Warning: The FILE_CHARSET setting is deprecated. Starting with Django 3.1, all files read from disk must be UTF-8 encoded.
default_encoding = settings.FILE_CHARSET
settings.FILE_CHARSET
์ด ๊ถ์ฅ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฒ์ 2.2๋ถํฐ ์ฌ์ฉ๋์ง ์์ :
์ด ์ค์ ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. Django 3.1๋ถํฐ ๋์คํฌ์์ ์ฝ์ ํ์ผ์ UTF-8๋ก ์ธ์ฝ๋ฉ๋์ด์ผํฉ๋๋ค.
๋ฒ์ :
๋ฆด๋ฆฌ์ค ๋ ธํธ๋ ๋ค์๊ณผ ๊ฐ์ด ๋งํฉ๋๋ค.
FILE_CHARSET
์ค์ ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. Django 3.1๋ถํฐ ๋์คํฌ์์ ์ฝ์ ํ์ผ์ UTF-8๋ก ์ธ์ฝ๋ฉ๋์ด์ผํฉ๋๋ค.
Django์ ๊ด๋ จ ์ปค๋ฐ :
https://github.com/django/django/commit/0cd465b63aa7c03a3d14bd5fd6543628d585f8da
ํฐ์ผ:
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด django-compressor์ ๋ชจ๋ settings.FILE_CHARSET
๋ฅผ utf-8
๋ก ๋ฐ๊พธ๋ฉด ์ถฉ๋ถํฉ๋๊น?
์ ๊ณ ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๋ชจ๋ ๋ฐ์์ utf-8
๋ฐ๊พธ๋ฉด ์ค์ ๋ก์ด ์ค์ ์ ์ฌ์ฉํ๋ ์ฌ๋๋ค์๊ฒ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ ์ ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค์ ์ด์๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๊ณ ,์๋ ๊ฒฝ์ฐ ๋ฌธ์ ์ ๋งค๊ฐ ๋ณ์๋ฅผ ์ค์ ํ์ง ์๋ ๊ฒ์
๋๋ค.
@karyon ๊ทํ์ ๋ต๋ณ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ํจ์น๋ฅผ ์์ฑํด ๋ณด์์ต๋๋ค. ์ ์ดํด๊ฐ ์ ํํ์ง ๊ฒํ ํด ์ฃผ์๊ธธ ๋ฐ๋๋๋ค.
์ด repo์ PR์ ๋ณด๋ด๋ ๊ฒ์ ์ด๋ฒ์ด ์ฒ์์ด๋ฉฐ ์ค์ํ ๊ฒ์ ๋์ณค์ ์๋ ์์ต๋๋ค. ์๋ชป๋ ์ ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์. ๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
# 934์์ ์์
์ ์ฝ๋๋ ๋ด ์ค์ ์์ ๋งค์ฐ ์ ์ฌํ ๊ฒฝ๊ณ ๋ฅผ ์ ๋ฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
/usr/local/lib/python3.7/site-packages/compressor/filters/base.py:123: RemovedInDjango31Warning: The FILE_CHARSET setting is deprecated. Starting with Django 3.1, all files read from disk must be UTF-8 encoded.
settings.FILE_CHARSET if settings.is_overridden('FILE_CHARSET') else
์
django-compressor==2.3
Django==2.2.2
settings.FILE_CHARSET
์์ฑ์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ์ฌ์ ์๋์๋์ง ์ฌ๋ถ๋ฅผ ํ
์คํธํ๋๋ผ๋ ๊ฒฝ๊ณ ๊ฐ ํธ๋ฆฌ๊ฑฐ๋๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ utf-8
๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํด์ผํ๋์ง ํ์ธํ๊ธฐ ์ํด ์ํํ๋ ์์
์
๋๋ค.
์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ ์งํ๋ ค๋ฉด ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋์ ํน์ ์ค์ ๋ํด์ด ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ์ ๋๋ค.
import warnings
with warnings.catch_warnings():
warnings.filterwarnings("ignore", message="popo popo")
warnings.warn("popo popo") # the code that will trigger the warning
# warnings are back to normal filtering from here
์ด๋ฌํ ์๋ฃจ์ ์ด ๊ด์ฐฎ๋ค๊ณ ์๊ฐ๋๋ฉด PR์ ์ ๊ณต ํ ์ ์์ต๋๋ค.
์, PR์ด ์ข์ ๊ฒ์ ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์๋ PR์ ๋๋๋ ค ์์ํ ์ ์์ต๋๋ค. :)
PR์ ๋ํ ํจ์น๋ฅผ ์์ฑํ๋ ๋์ ๊ฒฝ๊ณ ๊ฐ ์ค์ ๋ก is_overridden('FILE_CHARSET')
์ ๋งค์ฐ ์ด์ํ ํ์ ํ์ง์ ์ํด ํธ๋ฆฌ๊ฑฐ๋์์์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋ด ํ๋ก์ ํธ์์๋ ๋ด ์ค์ ์์ FILE_CHARSET
๋ฅผ ์ค์ ํ์ง ์์์ง๋ง is_overridden('FILE_CHARSET')
๋ True๋ฅผ ๋ฐํํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํ์ง๋ง django-compressor ๋ง ์ค์น๋ ์ํ์์ ์ต์ํ์ django ํ๋ก์ ํธ๋ฅผ ํ ์คํธํ๋ฉด-> ๊ฒฝ๊ณ ๊ฐ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ด PR์ ์ค์ ๋ก ํ์ํ์ง ์์ต๋๋ค. is_overridden('FILE_CHARSET')
๋ True๋ฅผ ๋ฐํํ์ง ์์์ผํ๋ฏ๋ก compress()
๋ฐ CompilerFilter()
๋ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์์ํค์ง ์์์ผํฉ๋๋ค. ์ ์์ ์ธ ์ํฉ์์.
์ฌ์ง์ด ๋ด๊ฐ ์ฅ๊ณ ์์ถ๊ธฐ์ ์ฝ๋๋ฒ ์ด์ค์ ์ถ๊ฐ ์ํ์ด ๊ฒฝ๊ณ PB์ ์ด๋ค ํ๊ท๋ฅผ ๊ฐ์ง, ๋ง์ ineressting๊ฐ๋์ง ์์ต๋๋ค ์ฅ๊ณ / ์ฅ๊ณ @ 3d716467๊ฐ ๋ฐ๋ก ์ ๊ฑฐํ์ต๋๋ค (์ฅ๊ณ 3.1 - ์ฌ ๊ณง ํฌํจ) ์ปค๋ฐ ์๊ธฐ ๊ฒฝ๊ณ , django ์ง์ ์ค๋จ ํ์ ๋ผ์ธ์ ๋ฐ๋ฆ ๋๋ค .
๋ฐ์๋ฉด : ์๋ก์ด django ์ฝ๋ ( FILE_CHARSET
๋ฐ ๊ด๋ จ ๊ฒฝ๊ณ ๊ฐ ๋ ์ด์ ์ข
๋ฃ๋์ง ์๋ ์ฝ๋)์ ๋ํด django-compressor๋ฅผ ํ
์คํธํ์ผ๋ฉฐ ๊ฐ์ง ํ ์์๋ ๋ฌธ์ ์์ด ์๋ํฉ๋๋ค.
๋ถํธ์ ๋๋ ค ์ฃ์กํฉ๋๋ค. ๋ฌธ์ ๋ฅผ (๋ค์) ๋ซ์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
settings.FILE_CHARSET
์์ฑ์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ์ฌ์ ์๋์๋์ง ์ฌ๋ถ๋ฅผ ํ ์คํธํ๋๋ผ๋ ๊ฒฝ๊ณ ๊ฐ ํธ๋ฆฌ๊ฑฐ๋๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐutf-8
๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํด์ผํ๋์ง ํ์ธํ๊ธฐ ์ํด ์ํํ๋ ์์ ์ ๋๋ค.์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ ์งํ๋ ค๋ฉด ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋์ ํน์ ์ค์ ๋ํด์ด ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฌํ ์๋ฃจ์ ์ด ๊ด์ฐฎ๋ค๊ณ ์๊ฐ๋๋ฉด PR์ ์ ๊ณต ํ ์ ์์ต๋๋ค.