[KT Aivle AI] 14주차 장고를 활용한 WebApp

hyowon·2024년 5월 22일
0

KtAivle

목록 보기
34/39

0. 개요

  • 장고를 활용하여 WebApp을 만들어보자
  • 장고에서는 MVT 디자인 패턴을 사용(자바의 MVC 디자인패턴과 유사)
    • db = model
    • web service = view
    • client = template 이라고 한다.

1. 개발 환경 구축

  • cmd 창에서 이동
    cd C:\dev

  • 장고 설치(cmd 창)
    pip install Django==4.2

  • 장고 버전 확인
    django-admin --version

2. 장고 프로젝트와 앱

장고는 프로젝트와 앱으로 구성되어 있다.

1) 장고 프로젝트 생성

  • 장고 프로젝트 생성(django-admin startproject 프로젝트 이름)
    django-admin startproject mysite
  • 만든 mysite로 이동
    C:\dev_re>cd mysite
  • 장고 실행
    C:\dev\mysite>python manage.py runserver

2) 장고 앱 생성

  • 장고 앱 생성 코드(python manage.py startapp 앱이름)

  • 커맨드 창
    C:\dev\mysite>python manage.py startapp blog

3) 장고 앱 등록

  • 모듈이 필요 ( 어플 등록하려면 INSTALLED_APPS에 반드시 등록해야 한다.)
  • 위에서 만든 blogsetting.pyINSTALLED_APPS에 반드시 등록

4) URL과 뷰 매핑

  • 이렇게 5가지의 순서로 전달받아서 실행된다.

  • 위와 같이 URL 매핑을 해준다.

5) 장고 앱

  • View 작성하기
    • app 별로 등록하기

  • 장고 앱 실행하기

6) Path 변수

  • URL 문자열 일부를 뷰함수의 인자로 전달하기 위해 선언하는 변수

3. 장고 Model

  • ORM 사용해서 DB 처리

DB 환경 설정

  • 현재 db.sqlite3 를 사용

0. 모델 생성

  • 모델 클래스 작성
    • 앱/models.py 에 정의
    • django.db.modelsModel 클래스상속
  • blog/models.py 에 모델 클래스 작성
from django db import models

class Post(models.Model):
    title = models.CharField(max_length=250)
    body= models.TextField

1. 마이그레이션

1. migration 파일 생성

    1. python manage.py makemigrations 앱이름
python manage.py makemigrations blog
    1. migrate 작업
python manage.py migrate blog

2. 데이터 추가(마이그레이션 파일의 내용을 DB에 반영 작업)

    1. 장고 쉘 커맨드에서 작성
python manage.py shell 
from blog.models import Post
Post.objects.all()
    1. 테이블 추가
p1 = Post()
p1.title = 'aaa'
p1.body= 'bbb'
  • p1 = Post() , p2 = Post() 이런것은 인스턴스라고 생각)
  • 2-1. 데이터 추가 방법 두가지(객체를 반환하냐 안하냐가 크다!)
    • Model의 save() 는 객체를 반환하지 않음
    • Model의 create() 는 객체를 반환한다.

3. 데이터 수정(두 가지 방법 존재)

    1. Model의 save()
p4 = Post.objects.get(id=1)
p4.title='test'
p4.save()
    1. QuerySet의 update()
qs = Post.objects.filter(title = 'eee')
qs.update(title='장고') 

예시

4. 데이터 삭제(여기도 두가지)

  • 정리 : Model에서는 직접 삭제, QuerySet 에서는 일괄 삭제를 해준다.

2. admin 앱에서 데이터 조작

  • 지금까지 한것을 admin 앱에서 조작
dev mysite>python manage.py migrate
  • admin 앱 사용 계정 만들기

  • admin 앱 url서버 실행

  • admin 페이지 등록

3) 모델 관계 설정

4. 장고 템플릿

템플릿이란?

  • 사용자의 요청에 대해 뷰함수에서 응답하는 HTML 파일을 장고에서는 템플릿이라고 부릅니다.

1) 템플릿 환경 설정

  • 템플릿 설정

  • html 파일 만들기

  • 파일 시스템 로더(검색 위치)

2) 템플릿 응답

  • context는 뷰에서 템플릿으로 전달하는 데이터를 말합니다.

  • context는 key:value 형식의 딕셔너리 타입으로 지정합니다.

  • path 중복 해결(아래와 같이 list.html 이 중복이라면 세분화해준다.)

3) 템플릿 태그

  • for

  • if

4) 템플릿 필터

  • 템플릿 필터란
    • 템플릿에서 {{ }} 문법은 {{}} 안의 값을 페이지에 출력하는 명령문입니다.
    • 그런데 값을 출력할 때 그대로 출력하는 것이 아니라 가공을 해서 출력할 수 있도록 장고 템플릿은 "필터" 라는 것을 제공합니다. 필터는 출력 전 전처리 작업을 하는 함수입니다.

  • linebreaks 는 줄 바꿈
  • {{ var |truncatechars:100 }} 는 문자열을 100자로 잘라서 출력합니다.

  • truncatewords 필터 : 변수를 50단어로 자르는 방법

5) 템플릿 상속

장고의 템플릿 상속은 HTML 파일 간의 부모-자식 관계를 정의하는 방식으로 이루어집니다. 부모 템플릿은 공통 레이아웃을 정의하고, 자식 템플릿은 부모 템플릿을 기반으로 추가적인 내용이나 변경사항을 정의합니다.

부모 템플릿

  • 부모 템플릿은 공통 레이아웃이나 구조를 정의하는 템플릿입니다.
  • 주로 기본적인 HTML 구조와 헤더, 네비게이션 바, 푸터 등을 포함합니다.
  • 부모 템플릿에서는 {% block %} 태그를 사용하여 자식 템플릿이 내용을 삽입할 수 있는 블록을 정의합니다.

자식 템플릿

  • 자식 템플릿은 부모 템플릿을 상속받아 특정 블록에 내용을 채웁니다.
  • 자식 템플릿은 {% extends '부모_템플릿.html' %} 태그를 사용하여 부모 템플릿을 지정합니다.
  • 그런 다음 {% block %} 태그를 사용하여 부모 템플릿의 특정 블록을 재정의합니다.

profile
안녕하세요. 꾸준히 기록하는 hyowon입니다.

0개의 댓글