< 사전 준비 >
외부 라이브러리 설치 및 설정
# 파이썬 기본 쉘보다 더 강력한 파이썬 쉘
$ pip install ipython
# Django 확장 프로그램 모음. shell_plus, graph model 등 다양한 확장 기능 제공
$ pip install django-extensions
-> 설치한 이후에 settings.py에 django_extensions 등록해주기!
패키지 목록 업데이트
$ pip freeze > requirements.txt
원래는 다음과 같은 명령어를 통해 Django Shell을 사용하지만
$ python manage.py shell
dajngo-extension이 제공하는 더 강력한 shell_plus로 진행
$ python manage.py shell_plus
Django shell 실행)
※ shall
: 운영체제 상에서 다양한 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램
- 셸은 사용자와 운영 체제의 내부사이의 인터페이스를 감싸는 층이기 때문에 그러한 이름이 붙음
" 사용자 <-> 셸 <-> 운영체제 "
QuerySet API
database API
: Django가 기본적으로 ORM을 제공함에 따른 것으로 DB를 편하게 조작할 수 있도록 도움
- Model을 만들면 Django는 객체들을 만들고 읽고 수정하고 지울 수 있는 DB API를 자동으로 만듬
database API 구문
"objects" manager
: Django 모델이 데이터베이스 쿼리 작업을 가능하게 하는 인터페이스
" DB를 python class로 조작할 수 있도록 여러 메서드를 제공하는 manager "
Query
: 데이터베이스에 특정한 데이터를 보여달라는 요청
"쿼리문을 작성한다." = 원하는 데이터를 얻기위해 데이터베이스에 요청을 보낼 코드를 작성한다.
이 때, 파이썬으로 작성한 코드가 ORM에 의해 SQL로 변환되어 데이터 베이스에 전달되며, 데이터베이스의 응답 데이터를 ORM이 QuerySet이라는 자료 형태로 변환하여 우리에게 전달
QuerySet
: 데이터베이스에게서 전달 받은 객체 목록 (순회가 가능한 데이터)- Django ORM을 통해 만들어진 자료형이며, 필터를 걸거나 정렬 등을 수행할 수 있음
단, 데이터베이스가 단일한 객체를 반환할 때는 QuerySet이 아닌 모델의 인스턴스로 반환됨
QuerySet API
" QuerySet과 상호작용하기 위해 사용하는 도구 (메서드, 연산자 등)"
QuerySet API를 활용해 데이터를 생성하고, 읽고, 수정하고 삭제해보기!
1. CREATE
데이터 객체를 만드는 3가지 방법
# 첫번째 방법
# 1.클래스를 통한 인스턴스 생성
article = Article()
# 2. 클래스 변수명과 같은 이름의 인스턴스 변수를 생성 후 값 할당
article.title = 'title'
# 3. 인스턴스로 save 메서드 호출
article.save()
# 두번째 방법
# 인스턴스 생성시 초기 값을 함께 작성하여 생성
article = Article(title='title', content='django!'
# 세번째 방법
# QuerySet API 중 create() 메서드 활용
Article.objects.create(title='title', content='django')
.save()
- 객체를 데이터베이스에 저장함
- 데이터 생성 시 save를 호출하기 전까지는 id = None
단순히 모델 클래스를 통해 인스턴스를 생성하는 것은 DB에 영향을 미치지 않기 때문에 반드시 호출!
2. READ
QuerySet API method를 사용해 데이터를 다양하게 조회하기
# 전체 데이터 조회
Article.objects.all()
# 단일 데이터 조회 - get()
'''
객체를 찾을 수 없으면 DoesNotExist
둘 이상의 객체를 찾으면 MultipleObjectsReturned
-> 기본키와 같이 고유성을 보장하는 조회에서 사용해야 함
'''
Article.objects.get(pk=1)
# filter()
# 지정된 조회 매개 변수와 일치하는 객체를 포함하는 새 QuerySet을 반환
Article.objects.filter(content='django!')
Article.objects.filter(title='title')
# filed-lookups
'''
특정 레코드에 대한 조건을 설정하는 방법
QuerySet 메서드 filter(), exclude() 및 get()에 대한 키워드 인자로 지정됨
'''
# content 컬럼에 'dj'가 포함된 모든 데이터 조회
Article.objects.filter(content__contains='dj')
3. UPDATE
# 수정하고자 하는 인스턴스 객체를 조회 후 반환 값을 저장
article = Article.objects.get(pk=1)
# 인스턴스 객체의 인스턴스 변수 값을 새로운 값으로 할당
article.title = 'byebye'
# save() 인스턴스 메서드 호출
article.save()
4. DELETE
# 삭제하고자 하는 인스턴스 객체를 조회 후 반환 값을 저장
article = Article.objects.get(pk=1)
# delete 메서드 호출
article.delete()
View 함수에서 직접 CRUD 구현하기
< 사전 준비>
base 템플릿 작성
url 분리 및 연결
CRUD 구현!
매주 금요일은 프로젝트 하는 날..! 어젯 밤에 공부도 안하고 걱정만 하다가 잤는데,
그래도 자기 직전까지 피피티 본 보람이 있었다! 별다른 도움없이 혼자서 해결 할 수 있어서 다행이었던...
담주 쟁고쟁고는 정신 똑바로 차리고 예습 복습 해야지..!
+ 그리고 정리해놔도 안 볼 줄 알았던 티스토리 참고하면서 했다.(아주 조금이지만) ㅎ 제법 개발자 같은 유나,,ㅎ
'Web > Django' 카테고리의 다른 글
Django Form (0) | 2022.09.07 |
---|---|
render vs redirect (0) | 2022.09.05 |
Form Data 보내고 가져오기 (0) | 2022.09.02 |
Templates Inheritance (0) | 2022.09.01 |
Django Model 1 (0) | 2022.08.31 |
댓글