Skip to content

Code Convention

Hyerin Sung edited this page Jul 24, 2026 · 1 revision

App

  1. 단위: API 명세서 도메인
  2. 네이밍: <도메인명> (snake_case, 복수형)

models.py

  1. 네이밍
    1. created_at
    2. updated_at
    3. user (User 외래 키 필드가 1개일 경우)
  2. 인자 넘길 때 줄바꿈하기
    image = models.ImageField(
    	upload_to='user/image',
    	null=True,
    	blank=True,
    )
  3. created_at 필드
    created_at = models.DateTimeField(
    	auto_now_add=True,
    )
  4. updated_at 필드
    updated_at = models.DateTimeField(
    	auto_now=True,
    )
  5. media 폴더 구조: <모델명>/<필드명>
    • 예시: upload_to='user/profile_image'

admin.py

  1. 일일이 등록
    from django.contrib import admin
    from community.models import User, Hashtag, Community, Question, Answer, LikeQuestion, LikeAnswer
    
    admin.site.register(User)
    admin.site.register(Hashtag)
    admin.site.register(Community)
    admin.site.register(Question)
    admin.site.register(Answer)
    admin.site.register(LikeQuestion)
    admin.site.register(LikeAnswer)

serializers.py

  1. 네이밍: <모델명><자유롭게>Serializer (PascalCase)
    1. PostListSerializer
    2. PostDetailSerializer
    3. UserLoginSerializer
    4. UserSerializer
  2. fields는 튜플로 적기
  3. docsString(코드 설명)

services.py

Tip

  • 뷰와 비즈니스 로직을 분리하기
  • 코드 역할 구분
    • URL: 엔드포인트
    • View: 요청 수신, 요청값 검증, 응답 송신
    • Service: DB 쿼리
    • Serializer: 응답값 형식 가공
  1. 네이밍: <모델명>Service (PascalCase)
  2. __init__ 메서드
    def __init__(self, request:HttpRequest):
    	self.request = request
    def __init__(self, request:HttpRequest):
    	self.request = request
    	self.serializer = ExampleSerialiser(data=request.data)
    def __init__(self, request:HttpRequest, pk:int|None=None):
    	instance = get_object_or_404(Example, pk=pk) if pk else None
    	self.request = request
    	self.instance = instance
    	self.serializer = ExampleSerialiser(instance, data=request.data)

views.py

  1. CBV (APIView)
  2. 네이밍: url 패턴에 따라 작명 (PascalCase)

urls.py

$\color{green}각\ 앱에서\ 관리\ \rm{O}$
$\color{red}프로젝트에서\ 한\ 번에\ 관리\ \rm{X}$

그외

  1. 네이밍
    1. 클래스명: PascalCase
    2. 변수/메서드명: snake_case

Clone this wiki locally