
특징: 데이터베이스와 직접 상호작용하는 부분으로, 데이터의 구조와 데이터를 정의함.
Django 의 ORM 으로 데이터베이스와 파이썬 간 매핑을 제공.
이를 통해 개발자는 파이썬을 통해 DB 작업을 수행할 수 있음.
역할: 애플리케이션의 데이터 구조를 정의하고, DB 작업 INSERT SELECT UPDATE DELETE 을 처리함.
ORM: Object-Relational Mapping. 객체 관계 매핑.
객체 지향 언어로 호환되지 않는 유형의 시스템 간에 데이터를 변환하는 기술.
특징: 프론트엔드의 역할을 하는 HTML 파일로 사용자에게 보여지는 컨텐츠를 정의함.
Django 템플릿 언어를 사용하여 동적인 컨텐츠를 쉽게 만들 수 있음.
템플릿은 뷰에서 전달된 데이터를 표시하고, 고정된 HTML 컨텐츠와 동적 데이터를 결합하여 클라이언트에게 전달.
역할: HTML, CSS, JavaScript 를 일컫음. 동적으로 생성된 데이터를 사용자에게 보여주는 역할을 함.
특징: 사용자의 요청을 처리하고, 필요한 데이터를 모델에서 가져와 템플릿에 전달하는 역할을 함.
뷰는 비즈니스 로직을 처리하고, 어떤 데이터를 보여줄지, 어떤 템플릿을 사용할 지 등을 결정.
Django 에서 뷰는 URL 요청을 받아서 처리하는 Python 함수 또는 클래스임.
역할: 사용자의 요청(Request)에 따라 적절한 응답(Response)을 생성.
DB 에서 데이터를 조회, 또는 특정 로직을 수행한 후 그 결과를 템플릿으로 전달하여 렌더링된 페이지를 반환함.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'), # 기본 경로로 접근 시 index 뷰 호출
path('about/', views.about, name='about'), # /about/ 경로로 접근 시 about 뷰 호출
]
from django.shortcuts import render
def index(request):
context = {'message': 'Welcome to my website!'}
return render(request, 'index.html', context) # 'index.html' 템플릿을 렌더링하고 context를 전달함
def about(request):
return render(request, 'about.html') # 'about.html' 템플릿을 렌더링함
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Home Page</title>
</head>
<body>
<h1>{{ message }}</h1> <!-- 뷰에서 전달된 'message' 변수를 출력함 -->
</body>
</html>
{{ variable }} 형식으로 사용됨.<img src="image.jpg" alt="description"> 에서 src 와 alt 는 이미지 태그의 속성임.| 기호를 사용하여 적용함.{{ name|lower }}
{{ date|date:"Y-m-d" }}
{% tag %} 와 같은 형태를 띔.# if 태그 사용법
{% if user.is_authenticated %}
인증된 고객의 경우
{% else %}
인증되지 않은 고객의 경우
{% endif %}
#, /* */ 와 같이 사용했던 그 주석이 맞음.# 나 ''' 로 주석처리할 텍스트를 감싸서 처리.{# 로 시작하고 #} 로 끝남.<!-- 로 시작하고 --> 로 끝남.<!-- base.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}My site{% endblock %}</title>
</head>
<body>
<header>
<h1>Site Header</h1>
</header>
<main>
{% block content %}{% endblock %}
</main>
<footer>
<p>Site Footer</p>
</footer>
</body>
</html>
<!-- `child.html`은 `base.html`을 상속해 컨텐츠 블럭을 채움 -->
<!-- child.html -->
{% extends "base.html" %}
{% block title %}Home Page{% endblock %}
{% block content %}
<p>Welcome back.</p>
{% endblock %}
settings.py 는 템플릿 경로를 설정하기 위해 수정함.settings.py 를 확인해 템플릿 파일을 어디서 찾을지 판단함.
기본적으로
settings.py파일의TEMPLATES설정 항목에서 템플릿 경로를 관리.
TEMPLATES는 리스트 형태로, 리스트 안에 여러 설정 옵션이 포함된 딕셔너리가 포함됨.
템플릿 경로는DIRS옵션을 통해 지정.
DIRS: 템플릿 파일이 위치할 디렉토리 경로를 리스트 형태로 지정함. 이 옵션을 통해 Django는 지정된 경로에서 템플릿 파일을 검색함.
가령 os.path.join(BASE_DIR, 'templates') 는 프로젝트의 기본 디렉토리 (BASE_DIR) 하위에 있는 templates 폴더를 지ㅓㅇ.
APP_DIRS: True 일 시 Django는 각 애플리케이션 내의 templates 디렉토리에서 템플릿을 자동으로 찾음.
즉 각 앱 속의 templates 폴더들 모두를 검색 대상에 포함함.
BACKEND: Django가 사용할 템플릿 엔진을 지정. 기본값은 'django.template.backends.django.DjangoTemplates'임.
OPTIONS: 템플릿 렌더링 시 사용되는 추가 옵션을 지정할 수 있음.
가령 context_processors는 템플릿에 자동으로 전달되는 변수나 함수를 정의하는데 사용됨.