본문 바로가기
프로그래밍/python

장고에서 slug 사용하기

by 신일석 2019. 5. 9.

장고에서 slug 사용하기

개요

slug는 의미있는 URL을 만드는데 사용되며, 블로그의 주소에서 주로 볼 수 있습니다.

정의

짧은 라벨로서, 문자, 숫자, 밑줄 또는 하이픈만을 포함. 일반적으로 URL에 사용. 예를 들어, 블로그 엔트리 URL은 다음과 같다고 할 때,
https://www.djangoproject.com/weblog/2008/apr/12/spring/
마지막 부분(spring)이 슬러그입니다.
출처: 용어 | Django 문서 | Django

이 글의 제목이 '장고에서 slug 사용하기'인데 이 글의 URL을 예로 들어 보겠습니다.

  • http://blog.jiktong.kr/1234
  • http://blog.jiktong.kr/%uC7A5%uACE0%uC5D0%uC11C%20slug%20%uC0AC%uC6A9%uD558%uAE30
  • http://blog.jiktong.kr/장고에서-slug-사용하기

마지막 예시가 slug입니다.

환경

  • Django 2.2.1

장고 models.py에서 slug

from django.db import models
from django.utils.text import slugify

class MyModel(models.Model):
  title = models.CharField(max_length=50)
  slug = models.SlugField(max_length=201, db_index=True, unique=True, allow_unicode=True)
  created = models.DateTimeField(auto_now_add=True)

  class Meta:
    ordering = ['-created']
    index_together = [['id', 'slug']]
  • allow_unicode=True 영문을 제외한 다른 언어도 사용할 수 있도록 합니다. => 한글지원
  • db_index=True 해당 필드를 인덱스 열로 지정합니다.
  • index_together = [['id', 'slug']] 'id'와 'slug'필드를 묶어서 색인하는 '멀티 컬럼 색인'을 지원합니다.

장고 urls.py에서 slug

from django.urls import path

from . import views

urlpatterns = [
    path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]