
파이썬으로 웹을 개발하기 위해서는 다양한 프레임워크가 존재하는데 그 중에서 간단하게 1인이 프론트엔드와 백엔드를 동시에 개발하기에 적합한 프레임워크를 찾던 중 장고를 활용해 보고자 했다.
실제로 이전에 일하던 회사 서비스의 초기 사이트도 장고로 개발된 쇼핑몰이었다. 그래서 장고로 만든 애플리케이션의 엔드유저로써 장고를 처음 접근했었고 그 중에서도 장고 내에서 기본적으로 제공하는 어드민 페이지를 업무에 주로 활용했던터라 익숙하고 편리하다고 생각했다.
이번에는 따로 책을 사거나 구글에서 맨땅에 헤딩을 하지 않고, Chat GPT3.5에게 장고를 배워보고자 한다. 즉 과외 선생님으로 채용한 셈이다.
Chat GPT를 통해서 새로운 프레임워크나 언어를 배워보는건 이번이 처음인데, 생각보다 대화를 통해서 서로 상호작용을 하다 보니 내가 헷갈리거나 모르는 부분까지 속시원하게 긁어주는 기분이다.

이렇게 Chat GPT에게 배우기 시작했다.

나의 학습 속도에 맞게 천천히 진행할 수 있었다.
그러면 지금부터 실제 학습한 내용을 바탕으로 정리하면서 장고에 입문해보도록 하겠다.
pip install django
또는
pip3 install django
둘 중 하나를 통해서 먼저 장고 라이브러리를 다운 받는다.
django-admin startproject myproject
위의 명령어는 myproject라는 이름으로 새로운 프로젝트를 만들어달라는 장고 명령어이다.
cd myproject
python manage.py startapp myapp
cd myproject는 myproject라고 2번에서 새로운 프로젝트를 생성하면 해당 프로젝트명으로 폴더가 하나 생기는데 cd(change directory). 즉 그 폴더로 이동을 하라는 명령어이다.
여기까지 따라왔다면 일단 처음 출발점에는 선 것이다. 이제는 이론을 조금 다루어 보겠다.
장고에서 앱(APP)은 하나의 기능을 담당하는 모듈이다.
따라서 이 이야기는 하나의 프로젝트 안에서 여러개의 독립된 앱을 만들고 개발할 수 있다는 의미이다.
또한 앱과 앱 사이에서 데이터나 데이터베이스를 주고 받을 수 있다.
만약 내가 쇼핑몰 사이트를 개발한다면
고객이 물건을 구매하고 쇼핑을 하는 페이지용 앱 하나와, 관리자가 주문을 관리하고 상품을 관리하기 위한 페이지용 앱 하나 이렇게 구분하여 모듈을 생성할 수 있는것이다.
물론, 이 앱을 나누는 기준은 개발자 마음이다.
이를테면 나는 상품 진열용 앱, 상품 결제용 앱, 고객을 위한 대시보드용 앱, 관리자를 위한 상품 등록용 앱 등 여러 앱으로 세분화 하여 나눌 필요가 있다고 생각된다면 언제든 나누어서 제작할 수 있다.
한 줄 설명 : 장고에서 모델(Model)은 데이터베이스(DB)와의 상호 작용을 담당하며, 'models.py' 파일에서 데이터 모델을 정의한다.
모델은 장고에서 데이터를 저장하는 방법을 정의하는 것이다. 이를테면,
1. 블로그에는 글이 있고
2. 각 글에는 제목, 내용, 작성자 등 정보가 있다.
모델은 이러한 정보들을 어떻게 저장할 지 정의하는 규칙이다.
따라서 모델을 만들때에는 기본적으로 무엇을 어떻게 저장할 지 고민해 보아야한다. 예를들면 위의 예시처럼 글을 저장하고 싶다면,
글의 제목, 내용, 작성자, 작성일 같은 정보를 고려해 두어야 한다.
모델을 장고에서 만드는 방법은 간단하다.
models.py라는 파일 안에 코드를 작성하면 된다. 이 코드는 데이터를 어떻게 저장할지 알려주게 된다.
예를 들어서 먼저 예시를 든 글을 저장하는 모델을 만든다면 아래와 같이 코드를 정의할 수 있다.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
author = models.CharField(max_length=50)
created_at = models.DateTimeField()
*from django.db import models : django.db 라는 패키지에서 models 모듈을 가지고 와라
쉽게 말하면 약간 코딩을 하고 컴파일 하는 단계와 비슷하다고 이해하면 된다.
모델을 정의한 후에는 이 변경된 사항을 데이터베이스에 적용해야 한다.
이를 위해서 장고의 마이그레이션 기능을 사용하여 적용해 주면 된다.
마이그레이션은 모델의 변경 사항을 추적하고 데이터베이스 스키마(Database Schema)를 업데이트하는 도구이다.
*여기서 데이터베이스 스키마(Database Schema)는 데이터의 구조, 형식, 관계 등을 정의하는 데 사용되는 개념이다. 스키마는 데이터베이스에서 어떻게 데이터가 구성되고 저장되는지에 대한 설계도라고 생각할 수 있다.
따라서 데이터베이스 스키마는 데이터베이스에서 전체적인 구조를 나타내는 것으로써 테이블, 열, 관계, 제약조건 등 데이터베이스 객체들의 구조를 정의한다.
정리하면, 데이터베이스 스키마는 데이터베이스에서 저장되는 데이터의 구조와 형식을 정의하는 설계도 같은 것이다. 이 스키마는 데이터베이스가 어떻게 구성되고 데이터가 저장되는지에 대한 전체적인 개요를 제공한다.
마이그레이션은 아래와 같은 단계로 이루어진다.
1. 변경된 모델을 확인하여 마이그레이션 파일을 생성한다.
2. 생성된 마이그레이션 파일을 데이터베이스에 적용하여 스키마를 변경한다.
python manage.py migrate
이 명령어를 통해 마이그레이션을 적용하면 된다.
여기서 주의할 점은, 마이그레이션은 데이터베이스의 상태를 변경하는 작업이기 때문에 주의해야 하고, 이 과정에서 데이터가 삭제되거나 수정될 수 있으므로 중요한 데이터가 있는 경우에는 미리 백업을 하는 것이 좋다.
이 마이그레이션을 적용하고 나면 모델의 변경 내용이 데이터베이스에 반영되어 해당 모델을 사용하여 데이터를 저장하거나 조회할 수 있는 상태가 된다.
이제 모델이 생성되었으므로 데이터를 생성, 읽기, 수정, 삭제하는 방법에 대해서 알아본다.
1. 데이터 생성하기 : 모델을 사용하여 데이터를 생성할 수 있다. 이를테면 블로그에 글을 생성하려면 모델을 사용하여 새로운 글 객체를 만들고 저장할 수 있다.
2. 데이터 읽기 : 모델을 사용하여 데이터를 읽을 수 있따. 데이터베이스에서 필터링 하거나 원하는 정보를 검색할 수 있다.
3. 데이터 수정 : 이미 존재하는 데이터를 수정할 수 있다. 필요한 경우 데이터를 통해 데이터를 수정하고 저장할 수 있다.
4. 데이터 삭제 : 데이터베이스에서 특정 데이터를 삭제할 수 있다.
장고에서는 관리자 페이지를 손쉽게 만들 수 있는 기능을 제공한다. 관리자 페이지를 설정해서 데이터를 관리하고 확인할 수 있다.
관리자 페이지를 제작하고 들어가기 앞서, 먼저 커멘트 창에서 아래 명령어를 입력하여 관리자 계정을 생성해야 한다.
python manage.py createsuperuser
이후에 해당 모델이 있는 애플리케이션 폴더 안에 admin.py 파일로 가서 아래와같이 입력한다.
from django.contrib import admin
from .models import Post
admin.site.register(Post)
from .models import Post : 현재 있는 폴더 내의 model.py에서 Post 클래스를 불러와서
admin.site.register(Post) : 어드민 사이트 안에 Post 모델을 등록해라.
라고 해석할 수 있다.
이렇게 해서 장고의 모델에 대해서 알아보았다.
다음 글에서는 모델에 대해서 더 깊게 다루어 보겠다 :)