Session 11 | Django C.R.U.D. (1)

Hyeonju L.·2020년 12월 1일
0

Sessions

목록 보기
4/8
post-custom-banner

1. Web에서는 어떤 일이 일어나는 걸까?

user가 제품의 상세정보를 보기 위해 이미지(썸네일)를 클릭하면 그 정보는 web application server로 요청되고, 서버는 필요한 정보를 Database에 다시 요청하여 응답한다.
이 모든 process는 HTTP 통신을 기반으로 이루어진다.

2. Django란?

Django는 웹서버와 데이터베이스 사이에 있는 파이썬 코드들의 집합. 파이썬 코드로 이루어짐.
1. 웹서버를 통해 요청이 들어오면, URL conf라는 모듈(파일)로 들어옴
2. 그 요청을 View로 전송: 요청이 들어온 데이터를 입맛에 맞게 가공하는 역할, 가공을 위해 model에 데이터 요청
3. Model은 database와 통신하여 view에 정보 전달

3. Django의 핵심 역할

1) Data 처리 - Model과 ORM

  • 파이썬 코드로 생성/조회/수정/삭제

2) 통신 및 요청처리

  • Model과 ORM을 잘 하기 위해서는 통신 및 요청처리를 잘 알아야 함.

ORM 사용해서 Python code로 database table 생성하기

Migration class

파이썬 코드와 데이터베이스 언어는 다름.
Migration class는 SQL문이라는 데이터베이스가 알아들을 수 있는 언어로 전달.

파이썬으로 짠 클래스가 데이터베이스로 짠 테이블과 맵핑해주는 것: ORM(Object-relational mapping)

모델을 통해 데이터작업
CRUD로 모든 작업 가능

4. CRUD

1) Create

models.py 에서 작성한 class 내용을 ORM을 통해 데이터 테이블로 전달

from project.models import Person

# Person 테이블에 '이현주'라는 사람의 정보(나이, 직업) 입력(create)
Person.objects.create(name='이현주', age=30, job='Backend Developer')

# objects라는 메소드는 Django에서 생성해놓은 것으로 일반 파이썬에서는 사용할 수 없음

메뉴(Menu) 생성하는 방법

  • create() 메소드 사용
	Menu.objects.create(name="음료") 	# '음료' 메뉴 생성
  • save() 메소드 사용
	a3 = Menu(name = "상품")
	a3.save()				# '상품' 메뉴 생성
  • bulk_create() 메소드 사용하여 여러 메뉴 한번에 생성
	a1 = Menu(name = "음료")
    	a2 = Menu(name = "푸드")
    	Menu.objects.bulk_create([a1, a2])	# '음료, 푸드' 메뉴 생성

mysql에서 생성한 메뉴 확인

	mysql> select * from menus;

2) Read

python class 내의 object 매니저가 모두 호출 가능

메뉴(Menu) 호출하기

  • get() 메소드와 name 필드 사용
	Menu.objects.get(name="음료") 	# '음료' 메뉴 호출
  • get() 메소드와 id 필드 사용
	Menu.objects.get(id="1") 	#  Menu 테이블에서 id=1인 object를 호출하라
  • Read를 위한 메소드는 get(), filter(), exclude(), values(), values_list()등이 있다.

  • filter()를 이용하면 데이터의 QuerySet [list]를 받아올 수 있음.

3) Update

Update는 조건에 맞는 걸 수정한다는 뜻이기 때문에 get이나 filter를 이용해 필요한 정보를 미리 불러와야 한다.

4) Delete

delete를 하기 위해서는 delete 할 요소를 확실하게 정해야하며, delete 하면 그 결과는 Tuple로 반환된다. 위치 지정을 따로 하지 않는 이상, 지워진 데이터 다음 순서로 다음 데이터가 지정됨.

Person.objects.filter(age=33).delete()
  Out: (2, {'Persons.Person':2}) 		# 2개 삭제됨

5. 결론

CRUD를 통해 웹상에서 일어나는 모든 작업 가능하다
나에게 필요한 것은 ORM 연습과 Django의 80%를 차지하는 QuerySet API!!
기본기 탄탄히 만들기!!

profile
What you think, you become. What you feel, you attract. What you imagine, you create.
post-custom-banner

0개의 댓글