Django에서 슬러그 생성하기
Django에서 슬러그 생성하기
슬러그 생성 방법
Django에서 슬러그를 생성하는 방법은 두 가지가 있습니다.
자동 생성
Django 모델에서 SlugField
를 사용하면 슬러그를 자동으로 생성할 수 있습니다.
class MyModel(models.Model):
title = models.CharField(max_length=255)
slug = models.SlugField(unique=True)
이 코드는 title
필드를 기반으로 자동으로 슬러그를 생성하는 slug
필드를 생성합니다.
직접 생성
django.utils.text.slugify()
함수를 사용하여 직접 슬러그를 생성할 수 있습니다.
from django.utils.text import slugify
title = "My Awesome Title"
slug = slugify(title)
print(slug) # Output: my-awesome-title
주의 사항
- 슬러그는 영문자, 숫자, 하이픈(_)만 포함해야 합니다.
- 슬러그는 고유해야 합니다.
추가 정보
예시
다음은 Django 모델에서 슬러그를 생성하는 예시입니다.
class Post(models.Model):
title = models.CharField(max_length=255)
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
super().save(*args, **kwargs)
예제 코드
from django.db import models
from django.utils.text import slugify
class Post(models.Model):
title = models.CharField(max_length=255)
slug = models.SlugField(unique=True)
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
super().save(*args, **kwargs)
# 사용 예시
post = Post(title="My Awesome Blog Post")
post.save()
print(post.slug) # Output: my-awesome-blog-post
설명
Post
모델은title
필드와slug
필드를 가지고 있습니다.slug
필드는unique=True
옵션을 사용하여 고유해야 합니다.save()
메서드는slug
필드가 비어 있으면title
필드를 기반으로 슬러그를 생성합니다.slugify()
함수는 문자열을 슬러그 형식으로 변환합니다.
실행 결과
my-awesome-blog-post
Django에서 슬러그 생성하는 대체 방법
라이브러리 사용
python-slugify
와 같은 라이브러리를 사용하여 슬러그를 생성할 수 있습니다. 이 라이브러리는 다양한 옵션을 제공하여 슬러그 생성 방식을 더욱 세밀하게 제어할 수 있습니다.
from slugify import slugify
title = "My Awesome Title"
slug = slugify(title, separator="_")
print(slug) # Output: my_awesome_title
직접 코드를 작성하여 슬러그 생성 로직을 구현할 수 있습니다. 이 방법은 더 많은 제어권을 제공하지만, 더 복잡하고 오류 발생 가능성이 높습니다.
def generate_slug(title):
# 슬러그 생성 로직
return slug
title = "My Awesome Title"
slug = generate_slug(title)
print(slug) # Output: my-awesome-title
어떤 방법을 사용해야 할까요?
- 간단한 경우:
SlugField
와slugify()
함수를 사용하는 것이 가장 간단합니다. - 더 많은 제어권이 필요한 경우:
python-slugify
와 같은 라이브러리를 사용하는 것을 추천합니다. - 완벽한 제어권이 필요한 경우: 직접 코드를 작성하여 슬러그 생성 로직을 구현할 수 있습니다.
추가 정보
python django django-models