Django Static

์ •์ ํŒŒ์ผ(static files)๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ถ”๊ฐ€ํŒŒ์ผ( CSS, ์ด๋ฏธ์ง€, JavaScript )์ด๋‹ค.

์ •์  ํŒŒ์ผ ์„ค์ •

settings.py

# settings.py

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.1/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋ณธ ์„ค์ • ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ BASE_DIR ๋ฐ‘์— static์ด๋ผ๋Š” ์„œ๋ธŒ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ทธ ์•ˆ์— ํŒŒ์ผ๋“ค์„ ๋„ฃ๋Š”๋‹ค. ์—ฌ๊ธฐ์„œ static ํŒŒ์ผ๋“ค์„ ์ฐพ๋Š” ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” STATICFILES_DIRS ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ ์„ค์ •ํ•ด์•ผํ•œ๋‹ค.

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

ํ•„์š”์— ๋”ฐ๋ผ ๊ฐ๊ฐ์˜ Django App๋งˆ๋‹ค ์ •์  ํŒŒ์ผ์„ ๋‹ด๋Š” ๋ณ„๋„์˜ static ํด๋”๋ฅผ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ๋„ templates์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ appํ•˜์œ„์— static ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑํ›„ app๋ช…(app/static/app)๊ณผ ๊ฐ™์ด namespace๋ฅผ ๋ช…ํ™•ํžˆ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

static
โ”œโ”€โ”€ css
โ”‚   โ””โ”€โ”€ style.css
โ”œโ”€โ”€ images
โ””โ”€โ”€ js

template(.html)

{% load static %}
<link rel="stylesheet" href=" {% static 'css/style.css' %}" type="text/css">

static ํŒŒ์ผ๋“ค์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ…œํ”Œ๋ฆฟ ์ƒ๋‹จ์— `

ํƒœ๊ทธ๋ฅผ ๋จผ์ € ๋ช…์‹œํ•ด์ค€๋‹ค. ๊ทธ ํ›„href="

" ๋‹ค์Œ๊ณผ ๊ฐ™์ด static tag๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ์ง€์ •ํ•œ๋‹ค. ์ด๋•Œstatic/` ํด๋” ์ดํ›„์˜ ๊ฒฝ๋กœ๋งŒ ์ง€์ •ํ•œ๋‹ค.

collectstatic

Django ํ”„๋กœ์ ํŠธ๋ฅผ deployํ•  ๋•Œ, ํฉ์–ด์ ธ์žˆ๋Š” ์ •์  ํŒŒ์ผ๋“ค์„ ๋ชจ์•„ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

$ python manage.py collectstatic

collectstatic ๋ช…๋ น์€ Django ํ”„๋กœ์ ํŠธ์™€ ๊ฐ Django App์•ˆ์— ์žˆ๋Š” staticํŒŒ์ผ๋“ค์„ settings.py์•ˆ์— ์ •์˜๋˜์–ด ์žˆ๋Š” STATIC_ROOT๋กœ ์˜ฎ๊ธฐ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. (์ด๋•Œ STATICFILES_DIRS์™€ STATIC_ROOT ์˜ ๊ฒฝ๋กœ๋Š” ๊ฐ™์œผ๋ฉด ์•ˆ๋œ๋‹ค.)

์ฐธ์กฐ

Last updated