가오리의 코딩일기
2장. 기본 컨셉 익히기 본문
🧩 프로젝트 시작하기
→ 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 |
---|