Django(6)
-
TIL51 | Django ORM 최적화(Lazy Loading, Caching, N+1 Problems)
Lazy Loading(지연 로딩) 필요할 때만 함수를 호출하는 개념 파이썬에서는 generator 함수 Django에서는 QuerySetAPI에서 지연로딩 특징을 가지고 있다. # DB 호출되지 않음. queryset = Publisher.objects.filter(id=20).exclude(id=2).annotate(count=Count('book')) 함수를 호출할 때 DB쪽에 실행되는 것이 아니라, queryset이 평가 될 때 DB를 호출한다. QuerySet이 평가 될 때 == 실제로 db를 호출하는 시점 Slicing, Iteration, repr() print, len(), list(), bool(), ... queryset = Publisher.objects.filter(i..
2021.11.18 -
TIL29 | Django C.R.U.D : Wrap up 정리
정리되지 않은 개인적인 기록용 글입니다. 내용이 정확하지 않을 수 있습니다. 1. Django에서 App은 기능별로 생성한다. 보통 model들은 core app에 관리 2. 클래스 참조는 string으로 할 것을 권장한다. 순환참조 문제가 발생할 수 있다. 순환 참조 문제를 사전에 방지하기 위해서 string으로 클래스를 참조하자. Django에서 의존성 관리를 해주기 때문에 어떻게 방지가 되는지 모르지만 어쨌든 string으로 참조하면 순환참조 문제는 발생하지 않는다. Django에서도 string 참조를 권장한다. ForeignKey('Owner', on_delete=cascade) 3. import convention # python built-in module import json # 외부 mo..
2021.10.20 -
TIL28 | Many-to-Many관계, Django의 ManyToManyField
Many-to-Many 관계 M : N 의 관계 (고객과 제품, 학생과 강의, 팔로우와 팔로워) Django에서는 ManyToManyField를 지원한다. ManyToManyField ManyToManyField(RelatedField) ManyToManyField를 사용할 경우 자동으로 중간 테이블을 설정해준다. 정참조와 역참조 객체 호출 정참조의 경우 : 속성으로 접근 역참조의 경우 : _set 또는 related_name 으로 접근 from django.db import models class Article(models.Model): headline = models.CharField(max_length=100) publications = models.ManyToManyField('Public..
2021.10.20 -
TIL27 | Django C.R.U.D : URLconf, Model, View
Django C.R.U.D 과제 목표 URLconf, View를 활용하여 리스트를 표출하는 엔드포인트 작성하기 엔드포인트의 결과로 return 할 JSON data 만들기 httpie를 이용해 GET/POST 요청 보내기 Modeling 주인과 강아지 URLconf 설정 최상위 urls.py 파일에 app 경로를 추가 master/urls.py from django.urls import path, include urlpatterns = [ path('', include('owners.urls')), ] owners app에 urls.py 생성 app의 urls.py 파일에 view class 경로 추가 owners/urls.py from django.urls import pa..
2021.10.20 -
TIL21 | Django Tutorials (2) 프로젝트 만들기
Django Workflow 프로젝트 만들기 첫 번째 장고 앱 작성하기, part 1 첫 번째 장고 앱 작성하기, part 2 🙋️ 이 글은 위의 튜토리얼을 따라하며 정리한 내용입니다. 1. 프로젝트 생성 프로젝트를 저장한 디렉토리로 이동해서 다음 명령어 입력 $ django-admin startproject 프로젝트명 프로젝트 이름 : mysite mysite/ -----> 프로젝트를 위한 컨테이너. 이 이름은 Django와는 상관이 없으며, 원하는 이름으로 바꿀 수 있다. manage.py -----> Django프로젝트와 상호작용하는 cmd라인의 유틸리티 mysite/ -----> 프로젝트를 위한 실제 Python 패키지들이 저장. __init__.py -----> Python에게 이 디렉토리를 패..
2021.10.14 -
TIL20 | Django Tutorials (1) 초기 세팅
Django Workflow 초기 세팅 1. 파이썬 가상환경 설정 conda create -n 가상환경이름 python=3.8 conda activate 가상환경이름 2. Database 생성 $ mysql -u root -p mysql> create database NAME character set utf8mb4 collate utf8mb4_general_ci; 3. Project Python Package 설치 # Django 버전확인 & 설치 $ python -m django --version $ pip install Django # mysql package $ pip install mysqlclient Ubuntu mysqlclient 설치 에러난 경우 $ sudo apt install libmy..
2021.10.14