django_compressor๋ฅผ ์ฌ์ฉํ์ฌ bootstrap.min.js๋ฅผ ์์ถํ์ต๋๋ค.
XML ๊ตฌ๋ฌธ ๋ถ์ ์ค๋ฅ๋ก ์ธํด navbar ์ถ์ ์์ด์ฝ์ด ๋ ๋๋ง๋์ง ์์ต๋๋ค.
๋๋ bootstrap4๋ฅผ ์ฌ์ฉํ๊ณ ์๋๋ฐ, bootstrap3์์ ๊ทธ๋ฐ ๋ฌธ์ ์ ์ง๋ฉดํ์ง ์์์ต๋๋ค.
๋๋ firefox์์ inspect ์์๋ฅผ ์ฌ์ฉํ์ฌ ์ฐจ์ด์ ์ ๋ณด์์ต๋๋ค.
์ค๋ฅ ์์ (์์ถ ์์)
.navbar-dark .navbar-toggler-icon {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")
}
์ด๋ก ์ธํด XML ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค (์์ถ ํ).
.navbar-dark .navbar-toggler-icon {
background-image: url("data:image/svg+xml;charset=utf8,%3CsvgviewBox='003030'xmlns='http://www.w3.org/2000/svg'%3E%3Cpathstroke='rgba(255,255,255,0.5)'stroke-width='2'stroke-linecap='round'stroke-miterlimit='10'd='M47h22M415h22M423h22'/%3E%3C/svg%3E")
}
# 828์ ๋ณ๊ฒฝ ์ฌํญ์๋ ๋ถ๊ตฌํ๊ณ ์ด๊ฒ์ด ์ฌ์ ํ ๋ฐ์ํ๊ณ ์์์ ํ์ธํ ์ ์์ต๋๋ค.
Django 2.0, Python 3.6, django-compressor 2.2, Bootstrap 4.1.1์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
CSSMinFilter
๋ก ์ธํด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
csscompressor์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์์ ์ฐจ์ฉํ์ฌ callback
๊ฒฝ๋ก ๋ณ๊ฒฝ). ์ด๋ ๊ฒํ๋ฉด rcssmin์ด URL์ ๋ง๊ฐ ๋จ๋ฆฌ๋ ๊ฒ์ ๋ฐฉ์งํ๋ rcssmin์ผ๋ก ์ ๋ฌํ๊ธฐ ์ ์ ๋ฐ์ดํฐ URL์ ๊ณต๋ฐฑ์ "% 20"์ผ๋ก ๋์ฒดํฉ๋๋ค.
def compress(css, **kwargs):
capture_svg = re.compile(r'url\("(data:image/svg.*?svg%3[Ee])\"\)')
data_urls = re.findall(capture_svg, css)
for data_url in data_urls:
css = css.replace(data_url, data_url.replace(' ', '%20'))
css = cssmin(css, **kwargs)
return css
class CSSMinFilter(CallbackOutputFilter):
callback = 'myapp.core.utils.compress'
์ด ๋ฌธ์ ๋ rcssmin ์๋๋ณด๊ณ ๋์์ต๋๋ค.
์ฐธ๊ณ ๋ก์ด ๋ฌธ์ ๋ # 878๊ณผ ์ค๋ณต ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
# 828์ ๋ณ๊ฒฝ ์ฌํญ์๋ ๋ถ๊ตฌํ๊ณ ์ด๊ฒ์ด ์ฌ์ ํ ๋ฐ์ํ๊ณ ์์์ ํ์ธํ ์ ์์ต๋๋ค.
Django 2.0, Python 3.6, django-compressor 2.2, Bootstrap 4.1.1์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
CSSMinFilter
๋ก ์ธํด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.