[파이썬][Django] 정적 파일 서빙 함수 사용 방법과 예제

Django에서 정적 파일을 서빙하는 함수를 사용하는 방법과 예제를 제공하겠습니다. 정적 파일은 CSS, JavaScript, 이미지 등과 같이 프로젝트 내에서 변경되지 않는 파일입니다.

  1. 정적 파일 디렉토리 설정

    먼저, settings.py 파일에서 정적 파일을 어디에 저장할 것인지 설정해야 합니다. STATIC_URLSTATICFILES_DIRS 설정을 사용하여 정적 파일의 URL 및 디렉토리를 정의합니다.

# settings.py
    
    STATIC_URL = '/static/'
    STATICFILES_DIRS = [BASE_DIR / "static"]
위의 설정은 `STATIC_URL`로 시작하는 URL 경로를 사용하여 `STATICFILES_DIRS`에 정의된 디렉토리에서 정적 파일을 찾을 것임을 의미합니다.
  1. 정적 파일 서빙 미들웨어 활성화

    Django에서 정적 파일을 서빙하려면 STATICFILES_FINDERSdjango.contrib.staticfiles 앱을 INSTALLED_APPS에 추가해야 합니다.

# settings.py
    
    INSTALLED_APPS = [
        # ...
        'django.contrib.staticfiles',
        # ...
    ]
    
    STATICFILES_FINDERS = [
        'django.contrib.staticfiles.finders.FileSystemFinder',
        'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    ]
  1. URL 패턴 설정

    urls.py 파일에서 정적 파일을 서빙하는 URL 패턴을 설정해야 합니다. 이렇게 하면 개발 서버에서도 정적 파일에 접근할 수 있습니다.

# urls.py
    
    from django.conf import settings
    from django.conf.urls.static import static
    from django.contrib import admin
    from django.urls import path
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        # 다른 URL 패턴들
    ]
    
    # 개발 서버에서 정적 파일 서빙
    if settings.DEBUG:
        urlpatterns += static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS[0])
위의 코드에서 `static` 함수는 개발 서버에서만 사용하도록 `DEBUG` 설정을 확인하며 정적 파일을 서빙합니다.
  1. 정적 파일 사용 예제

    이제 정적 파일을 사용할 수 있습니다. 예를 들어, HTML 템플릿에서 CSS 파일을 불러오는 예제는 다음과 같습니다:

<pre>
<code>

<!-- myapp/templates/my_template.html -->
    
    <!DOCTYPE html>
    <html>
    <head>
        <link rel="stylesheet" type="text/css" href="{% static 'css/styles.css' %}">
    </head>
    <body>
        <!-- 내용 -->
    </body>
    </html>

    위의 코드에서 `{% static 'css/styles.css' %}`는 정적 CSS 파일을 불러오는 데 사용됩니다.
    

</code>
</pre>

이렇게 하면 Django 애플리케이션에서 정적 파일을 서빙하고 사용하는 방법을 알게되었습니다. 이를 통해 웹 애플리케이션에서 CSS, JavaScript, 이미지 등의 정적 파일을 관리하고 제공할 수 있습니다.