기술블로그-Django편
🔍 Django에서 Model.objects.get(code=code)가 뭔 뜻이야?
Chansman
2025. 5. 14. 11:46
🔍 Django에서 Model.objects.get(code=code)가 뭔 뜻이야?
✅ 코드 구조 먼저 보기
short_url = ShortURL.objects.get(code=code)
이 코드에서 code가 두 번 나오니까 헷갈릴 수 있어요!
하지만 각각의 code는 다른 의미를 가집니다.
위치 의미 예시
code= 왼쪽 | 모델의 필드명 | ShortURL 모델의 code 컬럼 |
=code 오른쪽 | 뷰 함수 매개변수 또는 지역 변수 | 사용자가 URL로 입력한 "abc123" |
✅ 쉽게 풀어보면?
예를 들어 사용자가 아래 주소로 접속했다고 해볼게요:
http://127.0.0.1:8000/abc123/
그리고 urls.py에서 아래처럼 설정되어 있고:
path('<str:code>/', views.redirect_view, name='redirect')
뷰 함수는 이렇게 되어 있다면:
def redirect_view(request, code):
short_url = ShortURL.objects.get(code=code)
- URL에서 "abc123"이 code 변수로 들어오고
- 이걸 이용해 DB에서 code 필드가 "abc123"인 ShortURL 객체를 찾는 거예요
결국:
ShortURL.objects.get(code="abc123")
과 같은 동작입니다.
✅ 변수명을 다르게 써보면?
def redirect_view(request, url_code):
short_url = ShortURL.objects.get(code=url_code)
- 이 경우 url_code는 URL 파라미터 변수
- 왼쪽 code는 여전히 모델의 필드명
변수 이름이 다르기 때문에 더 헷갈리지 않고 의도가 명확해지기도 해요!
✅ 실전 예제
# models.py
class ShortURL(models.Model):
code = models.CharField(max_length=10, unique=True)
original_url = models.URLField()
# views.py
from django.shortcuts import redirect, get_object_or_404
def redirect_view(request, code):
short_url = get_object_or_404(ShortURL, code=code)
return redirect(short_url.original_url)
사용자가 /naver123/으로 접근하면:
- code="naver123"로 view에 들어오고
- DB에서 ShortURL 모델 중 code="naver123"인 데이터를 찾고
- 해당 original_url로 리다이렉트!
✅ 정리 요약
요소 설명
ShortURL.objects.get(...) | DB에서 특정 조건에 맞는 객체 1개 찾기 |
code=code | 왼쪽: 모델의 필드명 / 오른쪽: 전달된 값 (URL 파라미터 등) |
같은 이름 써도 됨 | 파이썬이 왼쪽은 키(key), 오른쪽은 값(value)으로 구분함 |
💡 헷갈릴 땐 오른쪽 변수명을 url_code처럼 다르게 만들어보면 이해가 쉬워져요!
필요하면 filter()와 get()의 차이도 함께 정리해드릴게요 😎