가오리의 코딩일기

2장. 기본 컨셉 익히기 본문

Python/Django

2장. 기본 컨셉 익히기

류경혜 2022. 7. 26. 16:00

🧩 프로젝트 시작하기

→ python3 —version : 파이썬 버전 확인 3.xx 이면 됨

→ python3 -m venv myvenv : 가상환경 myvenv 생성

→source myvenv/bin/activate : myvenv 활성화

→ pip install django~=3.2.10 : 장고 설치

→ django-admin startproject myweb . : 프로젝트 만들기 ⇒ myweb 폴더, manage.py 파일

→ python manage.py startapp photo: 앱 추가

→ python manage.py runserver : 프로젝트 실행, 종료 시 control+C

 

 

 

 

🧩 프로젝트와 앱

→ 프로젝트 : 어떤 하나의 큰 서비스, 우리가 만들 웹 사이트

→ 앱 : 프로젝트 내 기능과 같은 요소들을 일정한 기준으로 나눠 놓은 단위, 관리자앱, 게시판앱 등

# myweb > settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'photo' # 방금 만들었던 앱(photo) 추가
]
TIME_ZONE ='Asia/Seoul' # 시간대를 한국으로 설정

 

 

 

 

🧩 myweb > settings.py 3가지 옵션

a. DEBUG = True : 디버깅 모드

→ 어떤 페이지나 기능에서 에러가 났을 때 그 에러에 대한 메시지가 웹 페이지 그대로 노출되는 것을 의미

b. ALLOWED_HOST = ['127.0.0.1'] : 허용할 호스트 주에 대한 내용

→ 장고 프로젝트가 돌아가는 호나경에 접속할 수 있는 주소

c. INSTALLED_APPS = [] : 설치된 앱들을 등록하는 옵션

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'photo'
]

 

 

 

 

🧩 MTV: Model, Template, View

→ model : 앱의 데이터와 관련된 부분을 다룬다

→ template : 사용자에게 보이는 부분

→ view : 모델의 데이터를 템플릿으로 전달하고 템플릿에서 발생하는 이벤트를 처리한다

⇒ DB → model → view → template : 데이터 이동

 

 

 

 

🧩 관리자 만들기

→ python manage.py migrate : migrations 에러 고치기

→ python manage.py createsuperuser : 관리자 계정 만들기

→ Username, Email Address, Password 입력

→ 패스워드는 8글자 이상

 

 

 

 

🧩 Model

→ 앱의 데이터와 관련된 부분을 다루는 영역

→ 데이터베이스에 저장될 데이터의 모양을 정의하고 관련된 일부 기능들을 설정해 주는 영역

→ 우리가 만든 모델 형태의 데이터들을 데이터베이스에 쌓으면 데이터베이스 테이블이 된다

→ 모델을 데이터베이스에 적용시키면 그것은 테이블이 된다

→ Migration : 모델을 데이터베이스에 적용시키는 것

# photo > models.py
from django.db import models
# Create your models here.
class Photo(models.Model):
    title = models.CharField(max_length=50)
    author = models.CharField(max_length=50)
    image= models.CharField(max_length=200)
    description=models.TextField()
    price = models.IntegerField()

 

🔗필드 설정

더보기

→ CharField : 문자열(길이 제한 필요)

→ IntegerField : 정수

→ TextField : 문자열(길이 제한 필요X)

→ DataField : 날짜

→ DataTimeField : 날짜+시간

→ FileField : 파일

→ ImageField : 이미지 파일

→ ForeignKey : 외래키(관계)

→ OneToOneField : 1대1 관계

→ ManyToManyField : 다대다 관계

 

 

 

 

🧩 makemigrations

→ 모델을 변경한 내용을 기록해 파일로 만들어주는 과정

→ photo > migrations 내에서 생기는 파일들

→ models.py에서 수정한 내용이 makemigrations와 migrate 과정을 거쳐 실제 DB에 반영

→ python manage.py makemigrations : post 모델을 생성했다는 결과를 얻으면서 0001_initial.py 생성

→ python manage.py migrate

 

 

 

 

🧩 admin 페이지 적용

실행화면

# photo > admin.py
from django.contrib import admin
from .models import Photo
# Register your models here.
admin.site.register(Photo)

 

 

 

 

🧩 Template

→ 사용자에게 보이는 부분, 웹페이지의 골격, html로 작성된 부분

→ html은 정적인 웹 페이지를 보여주기만

→ 템플릿 태그 : 파이썬으로부터 바로 데이터를 넘겨받을 수 있도록 하는 태그

 

 

 

 

🧩 View

→ 템플릿과 모델 사이를 이어주는 다리같은 역할

→ 모델을 통해 데이터에 접근하여 템플릿으로부터 요청 받은 데이터를 뽑아와 템플릿에 답변으로 보내준다

→ 프론트가 백에게 데이터 요청 시 배개이 데이터 뽑아서 프론트에 제공해주는 과정을 뷰가 한다고 이해할 것

→ url은 앞에서 배운 라우팅의 역할과 동시에 서버로 해당 주소에 할당된 리소스를 요청하는 역할을 한다

→ 우리가 웹 브라우저로 보는 html페이지 뿐만 아니라 내부를 채우는 데이터 등을 포함하는 개념

 

'Python > Django' 카테고리의 다른 글

chapter1. 웹&파이썬 기초  (0) 2022.07.22