본문 바로가기
Python/Django

Django - 장고 프로젝트 구조 이해하기

by 코드뭉치 2023. 4. 4.

1주차 - Django의 구조와 명령어

 

Django의 MVT(Model Template View)패턴

M(model)

- 데이터베이스의 모델로 저장도고 사용되는 데이터 형태

T(template)

- 사용자에게 보여지는 부분

V(View)

- 실질적으로 프로그램이 동작하는 부분 url요청 - 응답 사이에 일어나는 서비스들이 존재하는 곳

 

장고 프로젝트의 구조

외부 <프로젝트명> - 프로젝트의 컨테이너

내부 <프로젝트명> - 추가되는 모듈과 기능들을 관리(실제 파이썬 패키지)

__init__.py - 현재 폴더가 파이썬 패키지임을 나타내주는 파일

asgi.py - 웹 서버와 Django, 어플리케이션을 비동기로 연결해 주는 Python의 표준 인터페이스

settings.py - 장고 전체의 setting을 설정, 관리하는 곳(중요)

urls.py - 장고의 url(API주소)를 관리하는 곳(중요)

wsgi.py - WSGI 호환 웹 서버가 프로젝트를 제공하기 위한 진입 파일

templates폴더 - 작성한 HTML파일이 들어가는 곳

venv폴더 - 프로젝트의 패키지들을 관리하는 '가상환경'

manage.py - 장고의 서버를 다루게 해주는 python파일

 

settings.py

INSTALLED_APPS - 장고에 설치 된 앱들

MIDDLEWARE - 사용자 요청/응답 사이에서 작동하는 시스템들

TEMPLATES - 나의 html파일을 자동으로 인식

DATABASES - 내가 사용할 데이터베이스 연동 설정

AUTH_PASSWORD_VALIDATORS - 패스워드 보안 수준 검증

LANGUAGE_CODE - 화면에 어떤 언어를 보여줄것인지

TIME_ZONE - 우리가 어떤 시간에 있는지

 

urls.py

from django.contrib import admin               # admin 모듈 import

from django.urls import path                   # path 함수 import

urlpatterns = [                                # url 패턴들을 저장할 리스트 생성

    path('admin/', admin.site.urls),           # path함수로 url패턴 정의 admin/경로로 접근시,
    					       # admin.site.urls로 연결함. 이를 리스트에 추가
]

프로젝트 구조 만들기

SNS를 만든다고 하면

1. 사용자 관리

2. 글쓰기

3. 친구만들기

의 기능들을 생각해볼 수 있고, 이는 다시 사용자로 나눌 수 있을 것 같다

# Terminal에서 입력

django-admin startproject <프로젝트 이름>

django-admin startapp <앱 이름>

django-admin startproject <프로젝트 이름>

django-admin startapp <앱 이름>

 

둘이 헷갈리지 않도록 하자

↓ 각각 생성되는 파일이 크게 다르다

더보기

project의 경우

__init__.py
asgi.py
settings.py
urls.py
views.py
wsgi.py

----------------------

app의 경우

migrations
__init__.py
admin.py
apps.py
models.py
tests.py
views.py

로 구성되어 있다.

 

앱 추가하기

# settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'tweet',  # tweet 앱 추가
    'user',  # user 앱 추가
]

 

 

VSCode에서 Django Template 폴더 경로 설정하는 방법

# settings.py

TEMPLATES = [
    {
        ...
        'DIRS': [BASE_DIR / 'templates'],
        ...
    },
]

 

댓글