AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

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' 자동 생성