Django 13

FrameWork/Django
유저 커스텀 모델 사용하기

유저 커스텀 모델 사용하기 Django에서는 유저 모델을 기본적으로 제공하고 있다.  django.contrib.auth.models.User에 보면 장고의 유저 모델은 다음과 같이 명시되어 있다.  📁 django.contrib.auth.models.Userclass User(AbstractUser): class Meta(AbstractUser.Meta): swappable = 'AUTH_USER_MODEL' 아래는 User 모델에서 사용하고 있는 속성들이다. username = models.CharField()first_name = models.CharField()last_name = models.CharField()email = models.EmailField()is_staff ..

FrameWork/Django
Django에서 static, media 관리하기

static, media 폴더 관리하기장고에서는 static, media와 같이 용도에 맞는 파일을 제공하기 위해서 settings.py에서 파일을 제공하는 경로를 비롯한 설정을 할 수 있다. 여기서 나오는 static, media의 폴더들은 다음과 같은 역할을 지닌다. static: 주로 장고에서 제공하는 정적 파일을 관리할 때 주로 사용한다. (html, css, javascript)media: 유저로부터 받은 파일을 저장하거나 제공할 때 주로 사용한다. 로컬 파일에서 static, media을 사용할 때는 프로젝트의 시작 urls.py에 static, media 경로를 입력해 사용한다.  🛣️ urls.pyfrom django.contrib.auth import settingsfrom django..

Cloud/Docker
docker compose을 이용하여 django, postgres 연결하기

일단 해당 작업을 하기 전에 현재 나의 폴더 구성을 보여주자면 아래와 같이 되어 있다.  backend 폴더는 django 프로젝트로 되어 있고 이를 이미지로 빌드하기 위해서 backend안에 Dockerfile 생성하여 만들었다.   🐳 DockerfileFROM python:3.9WORKDIR /appCOPY requirements.txt ./RUN pip install --no-cache-dir -r requirements.txtCOPY . .CMD [ "python", "manage.py", "runserver", "0.0.0.0:8000" ] 📄 requirements.txt   .........psycopg2 여기서 psycopg2 라이브러리는 python에서 postgreSQL을 사용하기..

FrameWork/Django
N + 1 쿼리 문제

오늘은 n + 1 문제에 대해서 알아보고자 한다.   N + 1 문제연관관계에서 발생하는 문제로, 연관 관계가 설정된 엔티티를 조회할 경우에 데이터 개수(N)만큼 연관관계의 조회쿼리가 추가로 발생하여 데이터를 읽어오게 되는 문제를 말한다.   예를 들어 아래처럼 각 모델과 연관관계를 설정해 두었다고 가정한다. from django.db import modelsclass Post(models.Model): title = models.CharField(max_length=20) contents = models.TextField()class Comment(models.Model): contents = models.TextField() post = models.ForeignKey("Post..

FrameWork/Django
select_related와 prefetch_related

오늘은 select_related와 prefetch_related에 대해서 정리해보고자 한다. 해당 주제를 다루기 전에 Django의 ORM 특징과 쿼리 셋에 대해서 알고 가면 좀 더 이해에 도움이 된다. https://jheaon.tistory.com/274 Django ORM과 QuerySet오늘은 Django의 ORM과 QuerySet에 대해 알아보고자 한다. Django ORM과 QuerySetORM (Object Relational Mapping)ORM이란 Object Relational Mapping의 약자로 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해 주jheaon.tistory.com  정참조, 역참조일단 설명하기전에, 다음과 같이 모델이 정의되어 있다고 가정한다. from dja..

FrameWork/Django
orm과 queryset

오늘은 Django의 ORM과 QuerySet에 대해 알아보고자 한다. Django ORM과 QuerySetORM (Object Relational Mapping)ORM이란 Object Relational Mapping의 약자로 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해 주는 기술을 의미한다. 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 SQL 쿼리문 없이도 데이터베이스 데이터를 다룰 수 있게 해 준다. QuerySetQuerySet이란 데이터베이스에서 전달받은 객체들의 모임을 말한다.  Django에서는 ORM을 사용하여 각 객체를 관계형 데이터베이스와 매핑해서 사용하는데 이때 모델과 데이터베이스 간의 연산을 수행하기 위해 모델매니저(Model Manager)가 존재한다. 이때 사용..

FrameWork/Django
settings.py 분리하여 관리하기

Settings.py을 분리한다는 것이 무슨 말이죠? 장고를 사용하다보면 기능 구현을 위해 여러 라이브러리나 모듈, 미들웨어 등을 추가하면서 몸집을 키워나가게 되는데 이 과정에서 settings.py 파일의 크기가 커진 나머지 내가 어떤 것을 추가하였는지 대해 찾기도 어려울 뿐더러, 배포을 할때에는 사용자에게 보여주면 안되는 세부정보들을 제공하지 않기 위해 개발용 세팅과, 배포용 세팅을 따로 둘 필요성이 있습니다. 따라서 이런 이유로 장고 개발자들은 본래 프로젝트를 시작하면 만들어지는 settings.py을 settings 라는 폴더를 만들고 그 안에 common.py, prod.py 등으로 쪼개서 관리하시는 식으로 프로젝트를 관리하고 있습니다. 한문장으로 설명하자면 : 그냥 프로젝트에 사용되는 설정 코..

FrameWork/Django
dumpdata와 loaddata을 통해 DB데이터 추출, 적재하기

이걸 왜 사용하나요? 장고에서 DB을 사용하다 보면, 성능이나 다른 이슈로 인해 다른 DB에 데이터를 옮겨야 하는 상황이 발생하기도 합니다. 이때 dumpdata와 loaddata을 활용한다면 쉽게 DB에서 데이터를 추출하고 적재할 수 있습니다. dumpdata : DB 데이터 추출 dumpdata 명령어를 실행한 뒤 출력되는 데이터를 파일로 추출하는 방식입니다. 해당 명령을 실행하면 dumpdata로 반환되는 값을 data.json 이름의 파일로 보내면서 참고로 data.json 말고 다른 이름으로 변경하여 사용이 가능합니다. python manage.py dumpdata > data.json 특정 장고 앱의 데이터만 저장한다면 dumpdata 뒤에 앱 이름을 입력합니다. python manage.py..

FrameWork/Django
장고(Django) 프레임워크 소개와 프로젝트 생성하기

파이썬은 빅데이터 영역뿐만 아니라 GUI, Web 분야에서도 쉬운 사용법과 직관적인 문법 덕분에 많은 사용자들이 즐겨 사용하고 있는 언어 중 하나이다. 그중 Web 영역에서 파이썬을 사용하려면 프레임워크를 이용하여 프로젝트를 진행하게 된다면 쉽게 웹사이트를 구축하고 운영할 수 있다. 파이썬으로 활용할 수 있는 프레임워크는 Django, Flask, Fastapi.. 등등 많은 종류가 있지만 그중에서도 어느 정도 완성적으로 기능들을 제공하는 Django 프레임워크에 대해 이야기해보고자 한다. 프레임워크 일단 장고에 대해 알아보기 전에 프레임워크가 무엇인지에 대해서 살펴보자. 프레임워크란 "어떠한 목적을 달성하기 위해 복잡하게 적혀 있는 문제를 해결하기 위한 구조"라고 설명하곤 한다. 그리곤 항상 뜨겁게 나..