- Article & User
- M:N
- outer join
- 백트래킹
- create
- 쟝고
- SQL
- 완전검색
- DB
- regexp
- 스택
- 이진트리
- stack
- Queue
- delete
- N:1
- Tree
- Django
- update
- count
- 트리
- distinct
- 그리디
- 뷰
- Vue
- 큐
- ORM
- drf
- migrations
- 통계학
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
데이터 분석 기술 블로그
Django에 대하여(3)_프로젝트와 앱 본문
1. Django 프로젝트와 앱
Django project는 애플리케이션의 집합으로 DB 설정, URL 연결, 전체 앱 설정 등을 처리합니다.
Django application은 독립적으로 작동하는 기능 단위 모듈로 각자 특정한 기능을 담당하며 다른 앱들과 함께 하나의 프로젝트를 구성합니다.
쉽게 설명하자면, 프로젝트는 카페로 전체 설정을 담당하고 앱은 게시글, 댓글, 회원 관리등으로 DB, 로직, 화면입니다.
Django 프로젝트 생성( 2024.03.23 - [백엔드] - Django에 대하여(2)_서버 실행하기 를 보시면 확인할 수 있습니다.)은 이전에 알려드렸으니 앱 생성과 등록을 알아봅시다.
# 앱 생성(앱의 이름은 '복수형'으로 지정하는 것을 권장해요.
python manage.py startapp articles
# 앱 등록
# 반드시 앱을 생성한 후에 등록해야 해요. 등록 후 생성은 불가능해요.
# settings.py
INSTALLED_APPES = [
'articles',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
2. Django 디자인 패턴
2-1. 디자인 패턴
소프트웨어 설계에서 발생하는 문제를 해결하기 위한 일반적인 해결책으로 공통적인 문제를 해결하는데 쓰이는 형식화된 관행입니다.
2-2. MVC 디자인 패턴(Models, View, Controller)
애플리케이션을 구조화하는 대표적인 패턴으로 데이터, 사용자 인터페이스, 비즈니스 로직을 분리합니다. 이는 시작적 요소와 뒤에서 실행되는 로직을 서로 영향 없이, 독립적이고 쉽게 유지 보수할 수 있는 애플리케이션을 만들 수 있습니다.
2-3. MTV 디자인 패턴(Model, Template, View)
Django에서 애플리케이션을 구조화하는 패턴으로 기존 MVC 패턴과 동일하지만 명칭을 다르게 정했습니다.
- Model
- 데이터와 관련된 로직을 관리
- 응용프로그램의 데이터 구조를 정의하고 데이터베이스의 기록을 관리
- Template
- 레이아웃과 화면을 처리
- 화면상의 사용자 인터페이스 구조와 레이아웃을 정의
- View
- Model & Template과 관련한 로직을 처리해서 응답을 반환
- 클라이언트의 요청에 대해 처리를 분기하는 역할
- View 예시
- 데이터가 필요하다면 model에 접근해서 데이터를 가져오고,
- 가져온 데이터를 template로 보내 화면을 구성하고,
- 구성된 화면을 응답으로 만들어 클라이언트에게 반환
2-4. Django의 프로젝트 구조와 앱 구조
3. 요청과 응답
3-1. URLs
# urls.py
from django.contrib import admin
from django.urls import path
from articles import views # 해석:articles 패키지에서 views 모듈을 가져옴
urlpatterns = [
path('admin/', admin.site.urls),
path('articles/', views.index), # url 경로는 반드시 '/'(slash)로 끝나야 해요.
]
http://127.0.0.1:8000/articles/ 로 요청이 왔을 때 views 모듈의 index 뷰 함수를 호출합니다.
3-2. View
# views.py
from Django.shortcuts import render
def index(request):
return render(request, 'articles/index.html')
# 모든 view 함수는 첫번째 인자로 request(요청) 객체를 필수적으로 받아요.
특정 경로에 있는 template과 request 객체를 결합해 응답 객체를 반환하는 index view 함수를 정의합니다.
render 함수
render(request, template_name, context)
render 함수는 주어진 템플릿을 주어진 컨텍스트 데이터와 결합하고 렌더링 된 텍스트와 함께 HttpResponse(응답) 객체를 반환하는 함수입니다.
- request: 응답을 생성하는데 사용되는 요청 객체
- template_name: 템플릿 이름의 경로
- context: 템플릿에서 사용할 데이터 (딕셔너리 타입으로 작성)
3-3. Template
- articles 앱 폴더 안에 templates 폴더 생성 (폴더명은 반드시 templates이어야 하고 개발자가 직접 생성해야 합니다!!)
- templates 폴더 안에 articles 폴더 생성
- articles 폴더 안에 템플릿 파일 생성
Django에서 template을 인식하는 경로 규칙은 아래와 같습니다:
3-4. 데이터 흐름에 따른 코드 작성
'백엔드' 카테고리의 다른 글
Django에 대하여(6)_form 활용 (0) | 2024.03.27 |
---|---|
Django에 대하여(5)_요청과 응답 (0) | 2024.03.26 |
Django에 대하여(4)_Django Template (0) | 2024.03.25 |
Django에 대하여(2)_서버 실행하기 (0) | 2024.03.23 |
Django에 대하여(1)_사전 준비 사항 (2) | 2024.03.22 |