2021-03-10
* DJANGO
Django Model
데이터 베이스를 관리하는 역할을 한다. (클래스를 만들어서 안에 항목들을 넣는다.)
데이터 베이스랑 같다고 생각하면 또 안된다~웹 어플리케이션의 데이터를 구조화하고 조작하기 위한 도구
조작 방법? (ORM : Object relational mapping)
ORM : SQL 모르기 때문에 python 언어로도 DB와의 소통할 수 있도록 도와준다.- ORM 장단점
장점 : SQL을 몰라도 DB조작 가능, SQL의 절차적 접근이 아닌 객체 지향적 접근으로 생산성이 높다.
단점 : ORM만으로 완전하지 않다. 완전한 서비스 구현은 어렵다.
@@ 생산성이 높으니까 쓰는거다!
@@ DB를 객체로 조작하기 위해 ORM을 사용한다.
- ORM 장단점
migrations
django가 model에 생긴 변화를 반영하는 방법4가지 명령어 (in 터미널)
- makemigrations : model 변경한 사항에 기반한 새로운 마이그레이션(설계도)을 만들 때
ORM이 읽을 수 있는 형식으로 바꾼다. - migrate : 마이그레이션을 db에 반영하기 위해 사용한다.
모델의 변경사항과 db의 스키마가 동기화된다. - sqlmigrate : 마이그레이션에 대한 sql 구문을 볼 수 있다. (sql 문법 궁금하면 한번씩 쑥쑥)
- showmigrations : 각 마이그레이션 파일이 migrate 됐는지 알 수 있다.
모두 python manage.py 명령어 로 터미널에 작성해 작동시킨다.
- makemigrations : model 변경한 사항에 기반한 새로운 마이그레이션(설계도)을 만들 때
DB API ( database와 소통하는 방법 )
Article.objects.all()
(클라스 이름).objects.(Queryset api)위의 방법으로 데이터 추가, 삭제, 정렬 등을 할 수 있다.
BUT. 너무 하나하나 확인하기에 번거롭다
▶ django-extensions 를 깔고(pip install) python manage.py shell_plus 내에서 조작하자.
CRUD(Create Read Update Delete)
1. Create
3가지 방법
```python
article = Article()
article.title = ''
article.content = ''
article.save()
```
```python
article = Article(title='', content='')
article.save()
```
```python
Article.objects.create(title='', content='')
```
2. Read :star:
3가지 방법
1. all() : 새로운 querysets를 주는 방법
2. get() : querysets를 안쓰는 방법
※ 객체가 없으면 doesnotexist 에러 발생
※ 객체가 여러개일 경우, multipleobjectreturned 에러 발생
→ unique(pk 같은) 또는 not null 특징을 가지고 있는 경우에만 사용한다.
3. filter() : 여러 개일 경우, queryset으로 뭉쳐서 반환한다. 에러가 안나~
3. Update
```python
article = Article.objects.get(pk=1)
article.title = 바꾸고
article.save()
```
4. Delete
```python
article = Article.objects.get(pk=1)
article.delete()
```
admin 활용 (사용자 등록, 수정, 권한 등등 간보기만?)
admin.py 내에서
model의 만든 클라스(Article) import 하고 admin.site.register(클라스 이름)$ python manage.py createsuperuser 하면 계정 생성
※ 이번주 해야할 일
: 블로그 2회 업로드 (완료). 알고리즘 문제 1개 풀기
※ 한줄 하루 마무리
: 뭔가 신기하고 재미잇는데 너무 많은 양이 들어온다 ㅠㅠ
'코딩일기정리' 카테고리의 다른 글
[정보처리기사]후기 (0) | 2021.07.12 |
---|---|
[SSAFY] 5기_1학기후기 (시작과 끝) (6) | 2021.05.28 |
[21.03.23]Django_사용자기능추가(USER, LOGIN, SIGNUP 등) (0) | 2021.03.23 |
[21.03.18]Django_STATIC,MEDIA(앱별 CSS 적용, Image의 DB) (0) | 2021.03.23 |
[21.03.08]Django_기본개념(MTV, 명령어, 구조) (0) | 2021.03.23 |