1. 프로젝트 생성
# 프로젝트_명으로 프로젝트 생성
django-admin startproject [프로젝트_명]
- 프로젝트 생성 후 로그는 발생하지 않음
- 디렉토리 트리를 확인해보면 프로젝트_명의 디렉토리가 추가되어있음을 확인 가능
2 DB생성
# 프로젝트 디렉토리 안으로 이동
cd 프로젝트_명
# 프로젝트에서 사용할 데이터가 저장될 Sqlite3 파일 생성
python manage.py migrate
3. 프로젝트 실행
# 서버 실행 (프로젝트 디렉토리 내부)
python manage.py runserver
4. 페이지 생성
4.1 앱 생성
# 프로젝트에서 사용할 앱_명으로 앱 생성
python manage.py startapp [앱_명]
앱도 마찬가지로 로그가 발생하지는 않지만 디렉토리가 생성됨을 확인할 수 있다.
4.2 앱 등록
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 앱 추가
'[앱_명]',
]
4.3 앱에서 사용할 페이지 구현
앱 하위에 templates 디렉토리를 생성해주고 페이지를 html파일로 구현
e.g. )
서버? 프로젝트? 앱?
서버(Server)
의미: 서버는 웹 애플리케이션을 호스팅하고 사용자의 요청을 처리하는 시스템을 의미합니다. 장고에서는 개발 시 내장 HTTP 서버를 사용할 수 있으며, 실제 배포에서는 Apache, Nginx 등과 같은 웹 서버와 WSGI 서버를 사용합니다.
역할: 서버는 클라이언트(예: 웹 브라우저)로부터 요청을 받아 처리하고, 프로젝트 내의 앱을 통해 정의된 로직을 실행하여 결과를 클라이언트에 반환합니다.
프로젝트(Project)
의미: 장고 프로젝트는 웹 애플리케이션의 전체 컨테이너입니다. 이는 설정 파일, 앱, 템플릿, 정적 파일 등 웹 애플리케이션을 구성하는 모든 것을 포함합니다.
역할: 프로젝트는 웹 애플리케이션의 구성 및 초기화를 담당하며, 앱을 조직하고 관리하는 중심점 역할을 합니다.
앱(App)
의미: 장고 앱은 프로젝트 내의 작고 재사용 가능한 웹 애플리케이션 컴포넌트입니다. 각 앱은 특정 기능을 수행하도록 설계되며, 일반적으로 모델(Model), 뷰(View), 템플릿(Template), 마이그레이션(Migration) 파일 등을 포함합니다.
역할: 앱은 장고 프로젝트 내에서 독립적인 기능 단위로 작동하여, 전체 웹 애플리케이션의 기능을 분할하고 관리하기 쉽게 만듭니다. 여러 프로젝트에서 재사용할 수 있습니다.
관계
서버 ↔ 프로젝트: 서버는 프로젝트를 호스팅하며, 외부 요청을 받아 프로젝트 내의 앱을 통해 처리합니다. 프로젝트 설정은 서버가 요청을 어떻게 처리할지 결정하는 데 중요한 역할을 합니다.
이러한 구조는 장고의 모듈식 접근 방식을 반영하며, 개발자가 복잡한 웹 애플리케이션을 효과적으로 구성하고 관리할 수 있도록 돕습니다.
프로젝트 ↔ 앱: 프로젝트는 하나 이상의 앱을 포함할 수 있으며, 각 앱은 프로젝트 내에서 특정 기능을 수행합니다. 앱들은 프로젝트 설정에 따라 서로 다른 방식으로 상호작용하며, 전체 웹 애플리케이션을 형성합니다.
5. 웹에 띄우기
5.1 page추가 (앱 하위에 있는 views.py에 추가)
from django.shortcuts import render
def index(request):
return render(request,'templates이후 띄울 파일 경로 포함 작성')
5.2 url과 view를 연결 (앱 하위에 있는 urls.py에 추가)
from django.urls import path
from . import views
urlpatterns = [
# path('[URL값]', views.[view에서 정의된 변수명], name='[패턴명]'),
# 예
path('', views.index, name='index'),
]
5.3 앱의 url과 프로젝트의 url을 연결 (프로젝트 하위에 있는 urls.py를 수정)
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
# path('앱까지의 경로', include('연결할 앱명.연결할 urls')),
# 예
path('', include('main.urls')),
]
'Backend > Python' 카테고리의 다른 글
[DRF] Django Rest Framework (0) (0) | 2024.07.09 |
---|---|
[Django] 게시판, 관리자, Superuser (0) | 2024.04.01 |
[Django] Django설치 (0) | 2024.03.26 |
[Python] Django vs Flask 비교 (0) | 2024.03.26 |
CSV파일 업로드 python코드 (0) | 2024.01.12 |