본문 바로가기

Backend/Python

[Django] 단순 웹 페이지 구현

반응형

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