장고 6

Django 에서 middleware 추가하기

Django 에서 middleware 추가하기 장고에서 미들웨어를 추가하는 방법에는 함수형과 클래스형이 있는데 이 글에서는 클래스형에 대해서 설명하겠다. 먼저 미들웨어 클래스를 정의하고 __init__ 메서드와 __call__ 메서드를 다음과 같이 추가하자. from django.http import HttpRequest, HttpResponse class CustomMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request: HttpRequest) -> HttpResponse: some_function() # 요청에 영향을 줄 수 있는 로직 response = self.g..

2022년 5주차 '스터디 시작'

Weekly Study "공부할 건 많은데 무엇부터 공부해야 할지 막막한 시점." 수료 직후라 조금은 쉬고 싶기도 해서 해이해져 있었다. 기존에 듣고 있던 파이썬 동시성 프로그래밍 강의를 듣거나 알고리즘 문제를 풀거나 하면 주 초반을 보냈다. 수요일에는 위코드에서 하는 [수료 후 가이드] 세션을 들었는데 기존에 생각하던 방향성(새로운 프로젝트 도전)과 사뭇 다른 가이드를 받고 다시 계획을 세워보기로 했다. 우선 취업에 도움이 되는 것은 새로운 프로젝트보다는 기존 프로젝트에 대한 리펙토링. 즉 유지보수가 더 도움이 될 거라는 것과 특히 백엔드의 경우 SQL과 CS 이론에 대한 지식이 부족하니 이쪽으로 공부를 집중하는 게 좋겠다는 내용이었다. 가이드는 충분히 동의하는 내용이었고 이를 위해 세션이 끝나자마자 ..

[TIL]django__데이터 중복_IntegrityError_ValidationError

오늘 배운 것 회원가입 시 이메일 정보가 중복되면 에러로 반환하고 싶다. 장고 view에서 데이터의 중복을 확인하는 방법에는 여러 가지가 있는데 한 번 살펴보자. 처음에 나는 회원정보가 있는 Member테이블에서 email 칼럼의 값을 리스트 형태로 가져와 변수에 저장했다. 그리고 요청받은 email 데이터가 해당 리스트에 있는지 확인 하는 식으로 코드를 작성했다. 코드는 다음과 같다. email_list = Member.objects.values_list("email", flat=True) if data['email'] in email_list: # data['email']은 요청받은 이메일 정보이다. return ~~ 그리고 동료로부터 배운 두 번째 방법은 exists()매서드를 활용에 중복 여부를 ..

위스타그램 스터디(백엔드) 정리

인스타그램 클론코딩(이하 위스타그램) 13가지의 미션이 주어졌다. 하지만 서비스를 구현하는 프로젝트는 처음이다보니 이 서비스의 목적이 무엇인지, 프로젝트를 통해 내가 무엇을 배울 수 있는지 과제의 의도와 의미를 파악하기가 힘들었다. 그래서 주어진 미션만 하나씩 해결해나가지 말고 동료들과 함께 이번 프로젝트를 전체적으로 분석해보기로 했다. 주말을 이용해 동료를 모아 1시간 조금 넘게 스터디를 진행했다. 스터디 내용은 아래와 같다. 현재 파이썬을 조금 익히고 장고를 배운지 2주차 밖에 안되었기 때문에 틀린 정보가 많을 수 있으니 감안해서 보기를 바란다. 스터디 목적 위스타그램 미션에 대한 의견을 공유하면서 프로젝트에 대한 이해도를 높이기 위함 장고 API 프로세스를 복기하고 위스타그램 프로젝트의 전체 과정을..

'ManyToManyField' 또는 '중간테이블'로 데이터 가져오는 방법

django(장고)에서 만들려는 데이터베이스 테이블의 관계가 n:n 관계, 즉 ManyToMany 관계의 테이블을 생성하는 방법은 크게 3가지가 있다. 1번 >>> 중간 테이블을 만들어 중간테이블이 각각 다른 테이블을 FK로 가져오는 방법 2번 >>> models.py 작성시에 다대다 관계의 테이블 중 하나의 테이블에 ManyToManyField를 사용하는 방법(이 방법은 장고가 자동으로 중간테이블을 생성해준다) 3번 >>> 1번, 2번 모두 사용하는 방법으로 중간 테이블을 만들고, ManyToManyField도 사용하면서 중간 테이블 지정을 미리 만들어둔 중간테이블로 지정하는 방법 *세 가지 방법에 대한 차이점(아래 예제를 보고 오면 이해가 될거에요!) 더보기 차이점1. >>> 1번의 경우 A에서 한 ..

장고 용어 정리

장고를 튜토리얼부터 배우고 있는데 아직 모르는 것 투성이다. 따라는 하는데 이해가 안된다. 그렇다면 이해를 하기 위해 무엇부터 공부해야할까? 문득 '모든 언어는 단어에서부터 시작한다'라는 생각이 들었다. 단어의 뜻을 알아야 문장의 의미를 유추할 수 있다. 의미를 유추하면 그제서야 맥락이 보이기 시작한다. 그렇다면 지금 내가 해야할 것은 장고와 관련된, 특히 자주 쓰이는 용어들의 의미를 파악하는 것이다. 이 글은 생소한 용어들을 하나씩 정리하면서 앞으로 내가 장고를 이해하는데 도움이 되어줄 글이다. 앞으로 주기적으로 업데이트 하면서 새로운 용어는 추가하고 잘못알고 있었던 것을 수정할 예정이다. URLconf (파일명 : urls.py) - 클라이언트로부터 요청을 받으면 가장 먼저 요청에 들어있는 URL을 ..