inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! Django 활용

상품 주문(Order)

urls.py 파일에 작성한 코드 분리 여부

245

유니크한 늑대

작성한 질문수 2

0

안녕하세요. 정말 강의 재밌게 잘 듣고 있습니다.

들으면서 궁금한 부분이 있어 질문드립니다.

/orders API를 예시로 들었을 때, urls.py 파일에 모든 코드가 작성되는데, 쿼리나 비즈니스 로직을 따로 분리하는 방식은 파이썬 프레임워크에서는 잘 사용하지 않는 방법인가요?

 

일반적으로 스프링에서는 service와 respository 클래스로 해당 코드를 분리하는 편이어서 이 차이점이 궁금합니다.

python django postgresql orm 동시성

답변 2

1

신동현

안녕하세요! 재밌게 들어주셔서 감사합니다 😄 파이썬에도 프로젝트가 커지면 service나 repository를 분리합니다. 다만 예시 프로젝트에서는 비지니스 로직이 복잡하지 않아서 따로 계층을 분리를 하지 않았습니다. 가장 마지막 강의에 매우 간단하게 service layer를 분리하는 강의가 있습니다.

0

유니크한 늑대

네, 강의 잘 들었습니다.

해당 강의 듣다가 또 궁금한 부분이 생겨서 질문드립니다.

 

서비스 클래스 내 함수를 모두 staticmethod로 선언하셨는데, 해당 클래스를 인스턴스화 해서 함수에 접근하게 하신 다른 이유가 있을까요?

 

강의 초반에 AuthenticationService에서 관련 부분 언급을 좀 해주셨는데, 여기서는 encode_token을 self 메서드로 선언해서 인스턴스화를 해야 함을 알고 있는데, 위의 서비스 클래스는 그런 함수가 없어서요.

0

신동현

도메인 별로 비지니스 로직끼리 하나의 클래스 안에 묶어서 코드 응집력 있게 관리하기 위해서 서비스 클래스의 메소드로 모두 구현하였습니다. 현재 구현에서는 서비스 클래스 내부 의존성이 없어서 전부 staticmethod로 구현되어 있는데요. 이 부분은 프로젝트가 복잡해지고 의존성이 생기면 인스턴스 메소드로 변경될 수도 있습니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 김재홍님.

Django에서도 마찬가지로 비즈니스 로직과 데이터 접근 로직을 분리하는 것이 좋은 프랙티스입니다. Django 프로젝트에서도 이런 목적으로 views, services, repositories나 models(FOR: File Organization by Responsibility)로 코드를 나누는 방법을 많이 사용합니다. 이에 대해 더욱 자세히 알아볼 수 있는 몇 가지 유사한 질문과 답변을 제공드립니다.

  1. DI 주입
  2. api 데이터 모델링 시, pandantic?

간단한 설명 추가:
- urls.py 파일은 주로 URL 라우팅을 담당하며, 쿼리와 비즈니스 로직은 views.py나 특정 비즈니스 로직을 담는 services.py, 데이터 접근 로직을 담는 repositories.py로 분리하여 관리하는 것이 좋습니다.
- Django에서는 views.py 파일에 비즈니스 로직을 담고, 이러한 로직이 복잡해질 경우 별도의 services.py 파일로 옮겨서 관심사를 분리할 수 있습니다.
- 데이터 접근 로직은 Django의 모델로 구현될 수 있으며, 이를 보다 추상화하기 위해 repositories.py 파일로 분리하여 사용할 수도 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

part2강의 문의사항입니다.

0

2

2

수강기간 연장 문의드립니다.

0

17

1

인덱스 슬라이싱

0

17

2

코드를 첨부해야하는 이유가 있나요?

0

15

2

소리가 겹쳐서 들려요

0

17

2

데스크톱과 노트북 연결

0

21

1

dict, zip

0

21

2

노션 : 파트3번 링크와 권한 , 파트4번 권한요청, 파트 5번도 미리 요청 드립니다.

0

25

4

6-6 실습 문의

0

20

2

미션 06-02

0

20

2

yes24 수집 md 파일 만들 때

0

18

2

python main.py 실행시 게임이 실행이 안돼요

0

21

2

antigravity 대신 cursor를 활용해도 되나요?

0

25

1

뉴스 검색 분류 한도초과

0

35

2

완성자료

0

24

2

섹션5 노션링크 는 따로 없나요?

0

25

2

필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)

0

34

2

Part 4에서 강의 연관 노션 정보들이 워드파일에 없습니다.

0

31

2

첨부자료 Part 4 코드 확인 부탁드리겠습니다.

0

26

2

pyenv는 윈도우에서는 잘 안되나 보네요..

0

171

1

강의와 .md 차이

1

108

1

pg_bigm으로 product의 name필드로 상품 검색

0

273

1

product의 name 필드로 상품 검색시 생성한 gin index사용 여부

0

250

1

python manage.py showmigrations 문제

0

278

1