안녕하세요 성조입니다.
이번 포스팅에서는 서버 구동시 기본으로 불러와지는 메인 페이지에 대해서 만들어 보려고 합니다.
runserver를 통하여 서버 구동시 ex) 8000포트 -> home page로 이동하는 형식으로 만들어 보겠습니다.
이 포스팅은 장고(Django) 4, windows, vscode, mysql을 활용하여 작업됐습니다.
App 추가하는 방법을 모르는 경우 다음의 포스팅을 참조할 것.
2022.10.03 - [Python 🐍/Django] - [Django] 장고(Django) App 시작하기
INSTALLED_APPS에 값 추가하기
빨간 박스에 home으로 생성해 놓은 app을 호출할 수 있도록 적용해야 한다.
'home',을 입력하여 App을 추가해 준다. 여기서 ,는 위아래 어디에 값을 넣어도 반드시 넣어야 하는 값이다.
home 앱을 보면 urls.py가 없다 urls.py를 생성하자.
home app에 다음과 같이 파일과 코드를 추가한다.
from django.urls import path
urlpatterns = [
]
이후 home에 templates 폴더를 추가한다.
이후 templates 폴더에 home.html 파일을 다음과 같이 생성한다.
views.py 파일에 템플릿 주소를 불러올 render를 작성한다.
from django.shortcuts import render
def home(request):
return render(request, 'home.html', {})
urls의 urlpatterns에 path 값을 home으로 맞춰준다.
templates에 home.html이 존재하고 views.py에서 home.html을 불러온다. 이후 urls.py에서 views.py의 값을 호출하여 출력한다. home app의 urls.py 파일의 ''경로는 서버가 구동될 때 home 파일이 자동으로 출력될 수 있도록 한다.
참고로 name="home"이 def home 함수를 호출하는 키워드가 된다.
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name="home")
]
위의 단계까지 끝났다면 home에 있는 값을 더 이상 조정하지 않는다. 본인의 config 사항을 다루는 aptitude 폴더에 urls.py를 눌러 들어간 후 include를 입력해서 값을 호출한다.
include의 경우 다른 앱에 존재하는 URL를 참조할 수 있게 도움을 주는 함수이다.
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('/', include('home.urls')),
]
이후 setting.py의 설정을 수정한다.
1번 라인에서 절대 경로 변환을 위해서 os(운영체제)를 호출한다.
9번 라인에 BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))의 의미는 다음과 같다.
BASEDIR 현재 폴더 기본 위치를 지정할 때 사용된다. 이후 설명은 가장 내부에 있는 것부터 설명을 진행한다.
(__file__)은 실행되는 python 스크립트의 파일명을 나타내는 의미를 갖는다.
os.path.abspath 전달 값은 해당 경로를 변환해 준다.
합쳐서 os.path.abspath(__file__)의 의미는 현재 실행된 파일의 절대 경로를 획득한 것이다.
os.path.dirname의 경우. 경로중의 디렉토리 명만 얻는데 여기서는 settings.py의 폴더 경로를 얻기 위해서 사용된 것이다.
18번 시작 라인의 APP에 home 앱이 들어가있어야 한다.
40번 라인에서 최상단 URLconf는 기존 aptitude를 유지한다.
48번 라인에서 템플릿(templates)의 DIRS 경로에 43번 라인 TEMPLATES_DIR을 추가했다.
TEMPLATES_DIR 경로는 기본 베이스 경로에 templates을 조인하여 사용한다는 의미이다.
사실 os.path.join(BASE_DIR, 'templates')를 그대로 사용해도 된다.
import os
from pathlib import Path
from . import local_settings
SECRET_KEY = local_settings.SECRET_KEY
DATABASES = local_settings.DATABASES
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'home',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
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 = 'aptitude.urls'
TEMPLATES_DIR = os.path.join(BASE_DIR, 'templates')
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [TEMPLATES_DIR],
'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 = 'aptitude.wsgi.application'
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',
},
]
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
USE_I18N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.1/howto/static-files/
STATIC_URL = 'static/'
# Default primary key field type
# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
이렇게 모든 설정이 끝나면 다음과 같이 server 구동과 동시에 메인 home page를 호출하게 된다.
또한 제대로 적용됐다면 다음 admin page도 정상적으로 나오는지 확인하자.
8000번 로컬에서 돌렸다면 다음의 주소를 통해 확인하자. http://localhost:8000/admin/
잘못된 지식 전달 사항이 있는 경우 언제든지 댓글 부탁드리겠습니다!
궁금하신 부분도 언제든 댓글 부탁드립니다!
감사합니다.다음 포스팅 때 뵙겠습니다!
'Python 🐍 > Django' 카테고리의 다른 글
[Django] 페이지 이동을 위한 URL 분리하기 (2) | 2022.10.07 |
---|---|
[Django] 관리자 계정 생성하기(admin) (0) | 2022.10.06 |
[Django] 장고(Django) App 시작하기 (0) | 2022.10.03 |
[Django] 장고(Django) MYSQL 연동하기 (3) | 2022.10.02 |
[Django] Vscode 가상환경에서 장고(Django) 프로젝트 시작하기 (2) | 2022.09.28 |