Django에서 Bulma를 적용하는 방법에 대해서 소개하려고 한다.
Bulma는 Bootstrap대신 쓸 수 있는 디자인 기능이다. 개인적인 생각으로는 좀 더 이쁜 것 같다.
자세한 내용은 여기서 확인 할 수 있다.
설치 방법은 CDM을 사용하여 사용할 수 있으나 Customize하기를 원하므로 Customize 방법으로 적어보도록 하겠다.
총 3가지 방법을 소개하고 있는데 그중 With node-sass 방법으로 진행해보도록 하겠다.
원문이 보고 싶다면
https://bulma.io/documentation/customize/with-node-sass/
1.폴더 생성, 시작
django static폴더에 mybulma라는 폴더를 만들고 폴더로 이동해준다.
cd static
mkdir mybulma
cd mybulma
npm init
입력하면 여러가지를 입력하라고 나오는데 전부 enter만 눌러주고 entry point가 나왔을 때 sass/mystyles.scss
을 입력해주자.
그러면 mybulma 폴더 안에 package.json 가 생긴 것을 확인 할 수 있다.
2. 필요 모듈 설치
필요 모듈 설치해준다.
npm install node-sass --save-dev
npm install bulma --save-dev
3. SCSS파일 생성
sass폴더를 만들어주고 안에다가 mystyles.scss 파일을 만들어준다.
static/mybulma/sass/mystyles.scss
@charset "utf-8";
@import "../node_modules/bulma/bulma.sass";
테스트할 html 파일에 다음 내용을 적는다.
templates/test.html
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>My custom Bulma website</title>
<link rel="stylesheet" href="{% static 'css/mystyles.css' %}">
</head>
<body>
<h1 class="title">
Bulma
</h1>
<p class="subtitle">
Modern CSS framework based on <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Basic_Concepts_of_Flexbox">Flexbox</a>
</p>
<div class="field">
<div class="control">
<input class="input" type="text" placeholder="Input">
</div>
</div>
<div class="field">
<p class="control">
<span class="select">
<select>
<option>Select dropdown</option>
</select>
</span>
</p>
</div>
<div class="buttons">
<a class="button is-primary">Primary</a>
<a class="button is-link">Link</a>
</div>
</body>
</html>
지금은 html 파일을 실행해보면 오류가 날 것이다.
아까 생성된 package.json 파일에 다음 코드를 수정해주자.
4. JSON파일 수정
package.json
"scripts": {
"css-build": "node-sass --omit-source-map-url sass/mystyles.scss css/mystyles.css",
"css-watch": "npm run css-build -- --watch",
"start": "npm run css-watch"
}
5. CSS-BUILD
터미널에 다음과 같이 입력해주자
npm run css-build
Rendering Complete, saving .css file...
Wrote CSS to /path/to/mybulma/css/mystyles.css
여기까지 하면 기본 bulma setting은 완료되었다. html 페이지를 확인해보면 적용된 것을 볼 수 있다.
추가) Customize
1)
다음 패키지들을 설치해주자.
pip install libsass django-compressor django-sass-processor
2)
settings.py에 다음과 같이 추가한다.
myproject/settings.py
INSTALLED_APPS = [
...
'sass_processor',
...
]
SASS_PROCESSOR_ENABLED = True
SASS_PROCESSOR_ROOT = os.path.join(BASE_DIR, 폴더명(있을 경우), 'static')
SASS_PROCESSOR_ROOT = os.path.join(BASE_DIR,'static') # 없으면
# SASS_OUTPUT_STYLE = 'compact' # 추가 사항
# SASS_PRECISION = 8 # 부트스트랩 sass일 경우
3)
html에 다음과 같이 적어주자.
{% load sass_tags %}
<link href="{% sass_src 'mybulma/sass/mystyles.scss' %}" rel="stylesheet" type="text/css" />
Customize 준비가 완료되었다.
4)
setting은 끝났으니 직접 사용해보자.
mystyles.scss 내용을 다음과 같이 바꿔주자.
mybulma/sass/mystyles.scss
@charset "utf-8";
// Import a Google Font
@import url('https://fonts.googleapis.com/css?family=Nunito:400,700');
// Set your brand colors
$purple: #8A4D76;
$pink: #FA7C91;
$brown: #757763;
$beige-light: #D0D1CD;
$beige-lighter: #EFF0EB;
// Update Bulma's global variables
$family-sans-serif: "Nunito", sans-serif;
$grey-dark: $brown;
$grey-light: $beige-light;
$primary: $purple;
$link: $pink;
$widescreen-enabled: false;
$fullhd-enabled: false;
// Update some of Bulma's component variables
$body-background-color: $beige-lighter;
$control-border-width: 2px;
$input-border-color: transparent;
$input-shadow: none;
// Import only what you need from Bulma
@import "../node_modules/bulma/sass/utilities/_all.sass";
@import "../node_modules/bulma/sass/base/_all.sass";
@import "../node_modules/bulma/sass/elements/button.sass";
@import "../node_modules/bulma/sass/elements/container.sass";
@import "../node_modules/bulma/sass/elements/title.sass";
@import "../node_modules/bulma/sass/form/_all.sass";
@import "../node_modules/bulma/sass/components/navbar.sass";
@import "../node_modules/bulma/sass/layout/hero.sass";
@import "../node_modules/bulma/sass/layout/section.sass";
5)
이제 기존 mystyles.css와 mystyles.scss를 Mapping 시켜줘야한다.
'Back-End > Django' 카테고리의 다른 글
Django ORM (0) | 2021.10.21 |
---|---|
Django iamport 적용하기 (0) | 2021.10.06 |
Django template 태그 모음 (0) | 2021.08.12 |
Django Admin Custom 3(간단한 Custom 연습) (0) | 2021.08.09 |
Django Admin Custom 2(templates 구조 분석) (0) | 2021.08.09 |