본문 바로가기

프로그래밍/Django개발(MAC OS)

Django_ Slug Url 한글 오류 해결 방법

반응형

페이스북 내용을 공유합니다.

Django Slug 깨짐현상

1) model field 에 allow_unicode = True로 했지만, slug를 url로 가져올때 url 에러가 나오는데 해결 방법은 아래 3가지와 같습니다.

Django 2.0 버전 올린 거 수정사항 하나 올립니다.

1. 문제점: blog 앱에서 post(글) 등록시, slug 에 한글이 들어가면, urls.py 모듈에서 에러 발생함.
2. 고려사항: models.py 에서 slug=SlugField(allow_unicode=True) 로 한글이 입력 가능한 상태임.
3 해결 방안 - 3가지
(1) path('post/<slug>/', ...) 또는 <str:slug> 으로 변경함.
(2) re_path(r'^post/(?P<slug>[-\w]+)/$', ...) 으로 변경함.
(3) path('post/<myslug:slug>/', ...) 으로 변경함.

4. 위 (3)번은 myslug 라는 path converter 를 아래처럼 정의해야 함.
-------------- blog/converters.py ---------------
from django.urls.converters import StringConverter

class HangulSlugConverter(StringConverter):
regex = '[-\w]+'

-------------- blog/urls.py ---------------------
from django.urls import register_converter
from . import converters

register_converter(converters.HangulSlugConverter, 'myslug')

(이하 동일함)

즐거운 코딩하세요

반응형