본문 바로가기
Programming/Making django Web Page

django로 내 웹페이지 만들기(3) - static 페이지 구성하여 include 하기

by 지혜를 탐구하는 오딘 2022. 6. 1.
728x90
반응형

웹페이지 마다, header, nav, footer 정도는 중복된다.

그걸 하나하나 코딩하기에는 너무나도 번거로운 일이다. (만약 1개 수정하면, 페이지가 100개 일 경우, 100개 수정해야한다.)

그렇기에, 해당 요소를 1개 만들어서 다른 요소에 포함시키는 방법을 사용해야 겠다.

 

1. settings.py 코드 추가하기

한 줄만 추가하면 된다. 

STATICFILES_DIRS = [
    BASE_DIR / 'static'
]

(미래의 나를 위해서) 편의상 전체 코드도 추가했다. (120번 라인 즈음에 있다.)

settings.py 코드 보기👇

더보기
"""
Django settings for wednesday1304 project.

Generated by 'django-admin startproject' using Django 4.0.3.

For more information on this file, see
https://docs.djangoproject.com/en/4.0/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.0/ref/settings/
"""

from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-5qg83)-u4_ov^nac8#u80xb4p*4amsg@g&c-xtp77cg=7ca&vz'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'wednesday1304',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'wednesday1304.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'wednesday1304.wsgi.application'


# Database
# https://docs.djangoproject.com/en/4.0/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}


# Password validation
# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/4.0/topics/i18n/

LANGUAGE_CODE = 'ko-kr'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_TZ = True


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

STATIC_URL = 'static/'

STATICFILES_DIRS = [
    BASE_DIR / 'static'
]

# Default primary key field type
# https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

 

다음과 같은 디렉토리 구조를 만들자.

static/ 에 대해서 이해했다면, 이렇게 하지 않아도 된다.

그리고 index.html 에서 link 태그에 href 값을 변경하자. 또한 header에 있는 img 의 주소도 변경하자. (여하튼 주소는 다 변경하자!)

 

그리고 include templates 를 해보자.

templates 폴더 안에 'includes' 이름의 폴더를 만들었다. 

 

그리고 index.html 의 값을 변경하면 된다.

만약 'static' 이 html 에 들어가 있다면, 해당 html에 {% load static %} 이 들어가 있어야 한다.

 

그 중에서 static_js.html 의 보드를 보자.

{% load static %}
<script src="{% static '/js/about_nav.js' %}"></script>

{% load static %} 을 하지 않으면, 해당 경로가 어딘지 몰라 찾지 못해 오류가 생긴다.

 

 

그리하여 수정을 다 하였다면, index.html 의 코드를 보자.

 

index.html 코드 보기👇

더보기
<!--
-- File    : index.html
-- Date    : 2022. 05. 31
-- Author  : Odin
-- Last Update : 2022. 05. 31
-- Description:
--     index.html
-->
{% load static %}

<!DOCTYPE html>
<html lang="ko">
<head>
    {% include "includes/head.html" %}

    <title>Document</title>
</head>
<body>

    {% include 'includes/header.html' %}

    {% include 'includes/nav.html' %}

    <div class="wrapper">
        <main>
            <section>
                section
            </section>

            <article>
                article
            </article>
        </main>

        <aside>
            aside
        </aside>

    </div>

    {% include 'includes/footer.html' %}

</body>
</html>

{% include 'includes/static_js.html' %}

한결 간결해졌다.

이제 이 index.html 을 템플릿 삼아서, main 태그 내부의 내용을 변경하면 되겠다.

 

 

 

결과물(화면 결과)

 

결과가 같으니, 그만 알아보자.

 

 

 

 

 

 

(참고)

https://docs.djangoproject.com/ko/4.0/howto/static-files/

728x90
반응형

댓글