[python] Django의 정적 파일(Static files) 처리 방법은 어떻게 되는가?

Django의 정적 파일(Static files) 처리 방법

Django는 웹 애플리케이션 개발을 위한 강력한 프레임워크입니다. 애플리케이션에는 정적 파일(예: CSS, JavaScript, 이미지 파일 등)이 필요할 수 있습니다. 이 문서에서는 Django에서 정적 파일을 처리하는 방법에 대해 알아보겠습니다.

정적 파일 디렉토리 구성

Django에서는 STATICFILES_DIRS 설정을 사용하여 정적 파일의 디렉토리 구성을 정의합니다. settings.py 파일에서 STATICFILES_DIRS 변수에 디렉토리 경로를 설정할 수 있습니다.

# settings.py

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

위의 예제에서 STATICFILES_DIRSstatic 디렉토리를 포함하는 리스트입니다. 이 디렉토리는 프로젝트의 루트 디렉토리에 위치하며, 여기에 정적 파일을 저장합니다.

정적 파일 URL 설정

Django에서는 정적 파일의 URL을 설정해야 합니다. 이를 위해 urls.py 파일에서 정적 파일 경로를 설정합니다.

# urls.py

from django.contrib import admin
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
]

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

위의 예제에서 urlpatterns 리스트에 static() 함수를 사용하여 정적 파일의 URL을 설정합니다. settings.py 파일에서 STATIC_URL 변수로 설정된 URL 패턴을 사용합니다. 또한, settings.py 파일에서 STATIC_ROOT 변수에는 정적 파일을 모으는 경로를 설정합니다.

정적 파일 사용

이제 정적 파일을 사용할 준비가 되었습니다. 예를 들어 CSS 파일을 사용하려면 HTML 파일에서 해당 CSS 파일을 import 해야 합니다.

<!-- templates/index.html -->

{% load static %}
<!DOCTYPE html>
<html>
<head>
    <title>My Django App</title>
    <link rel="stylesheet" href="{% static 'css/styles.css' %}">
</head>
<body>
    <h1>Welcome to my Django app!</h1>
</body>
</html>

위의 예제에서 {% load static %}를 사용하여 Django의 정적 파일 태그를 로드합니다. 그리고 CSS 파일을 <link> 태그로 가져올 때 {% static 'css/styles.css' %}를 사용하여 정적 파일의 URL을 설정합니다.

정적 파일 수집

Django 애플리케이션을 배포할 때, 정적 파일을 한 곳에 모아야 합니다. 이를 위해 collectstatic 명령을 사용할 수 있습니다. 아래의 명령을 통해 정적 파일을 모을 수 있습니다.

$ python manage.py collectstatic

위의 명령은 STATIC_ROOT로 설정된 경로에 정적 파일을 수집합니다.

결론

Django에서 정적 파일을 처리하는 방법을 알아보았습니다. STATICFILES_DIRS 변수를 사용하여 디렉토리 구성을 설정하고, urlpatterns 리스트와 static() 함수를 사용하여 정적 파일의 URL을 설정합니다. 정적 파일을 사용하려면 {% static %} 태그를 사용하여 URL을 지정해야 합니다. Django 애플리케이션을 배포할 때는 collectstatic 명령으로 정적 파일을 모아야 합니다.

참고 자료