Support unicode in url

This commit is contained in:
2026-02-12 10:44:37 +11:00
parent 04f452087d
commit d1d6dfa143
3 changed files with 19 additions and 7 deletions
BIN
View File
Binary file not shown.
+1 -3
View File
@@ -184,7 +184,7 @@ class Tag(models.Model):
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.name)
self.slug = slugify(self.name, allow_unicode=True)
super().save(*args, **kwargs)
class Page(models.Model):
@@ -338,5 +338,3 @@ class Image(models.Model):
height=height,
fit='cover'
)
+18 -4
View File
@@ -1,10 +1,24 @@
from django.urls import path
from django.urls import path, register_converter
from . import tag_views
class UnicodeSlugConverter:
"""Path converter that accepts Unicode characters in slugs, including Chinese, Japanese, etc."""
regex = r'[-\w]+' # \w includes Unicode word characters
def to_python(self, value):
return value
def to_url(self, value):
return value
register_converter(UnicodeSlugConverter, 'uslug')
urlpatterns = [
path('ui/tags/', tag_views.TagListView.as_view(), name='tag-list'),
path('ui/tags/new/', tag_views.TagCreateView.as_view(), name='tag-create'),
path('ui/tags/<slug:slug>/', tag_views.TagDetailView.as_view(), name='tag-detail'),
path('ui/tags/<slug:slug>/edit/', tag_views.TagUpdateView.as_view(), name='tag-update'),
path('ui/tags/<slug:slug>/delete/', tag_views.TagDeleteView.as_view(), name='tag-delete'),
path('ui/tags/<uslug:slug>/', tag_views.TagDetailView.as_view(), name='tag-detail'),
path('ui/tags/<uslug:slug>/edit/', tag_views.TagUpdateView.as_view(), name='tag-update'),
path('ui/tags/<uslug:slug>/delete/', tag_views.TagDeleteView.as_view(), name='tag-delete'),
]