Django에서 슬러그(Slug) 사용의 중요성과 구현 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 대상자: Django 프레임워크를 사용하는 중급 이상 개발자
- 난이도: 중간 (모델 필드 정의, 커스텀
save()
메서드 이해 필요)
핵심 요약
SlugField
사용:products/wireless-headphone/
와 같이 유저 친화적인 URL 생성 가능- SEO 최적화:
django-slugs-complete-guide
와 같은 설명적인 URL은 검색 엔진에 유리 - 중복 처리:
slugify()
+ 카운터로headphone-1
,headphone-2
같은 중복 방지 구현
섹션별 세부 요약
1. 슬러그의 정의와 목적
- 슬러그는 공백, 특수문자를 제거한 URL 친화적인 문자열 (예: "Django Slugs: Complete Guide" →
django-slugs-complete-guide
) - 기사 제목을 식별하는 뉴스 기사 용어에서 유래
2. SEO 및 사용자 경험 혜택
- 검색 엔진 최적화:
/api/products/wireless-bluetooth-headphones/
대신/api/products/47/
보다 설명적 URL 선호 - 유저 친화성: URL을 통해 제품 종류를 예측하고 공유 가능
- 프로페셔널한 API:
products/47/
대신products/wireless-headphone/
형태로 보다 전문적인 인상
3. 보안성 향상
- 데이터베이스 ID 노출 방지:
47
대신wireless-headphone
사용으로 ID 추측이 어렵게 됨 - 보안 강화: URL을 통해 다른 제품 ID를 예측하는 데 어려움 증가
4. Django에서의 구현 방법
SlugField
사용 예시:
class Product(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, unique=True, blank=True)
slugify()
자동화: self.slug = slugify(self.name)
로 이름에서 슬러그 생성5. 중복 슬러그 처리
- 중복 시
headphone-1
,headphone-2
형식으로 카운터 추가:
while Product.objects.filter(slug=unique_slug).exists():
self.slug = f"{unique_slug}-{counter}"
결론
- 권장사항: Django 프로젝트에서
SlugField
를 활용해 URL 가독성, SEO, 보안을 동시에 개선 - 실무 팁:
slugify()
+ 중복 처리 로직을 모델의save()
메서드에 포함하여 자동화 - 예제:
name='Python Best Practice Book'
→slug='python-best-practice-book'
자동 생성