Это дополнение к Сельчук ответ здесь
для передачи таких символов языка / юникода вам необходимо
- Напишите какой-нибудь собственный конвертер пути
- Использование
re_path()
функция
1. Конвертер пользовательских путей
Если мы посмотрим на исходный код Django, преобразователь пути slug
использует это регулярное выражение,
[-a-zA-Z0-9_]+
, что неэффективно здесь (см. ответ Сельчука).
Итак, напишите свой собственный конвертер слагов, как показано ниже
<b>from django.urls.converters import SlugConverter</b>
class CustomSlugConverter(<b>SlugConverter</b>):
<b>regex = '[-\w]+' # new regex pattern</b>
Тогда зарегистрируйте его,
<b>from django.urls import path, register_converter
register_converter(CustomSlugConverter, 'custom_slug')</b>
urlpatterns = [
path('question/<b><custom_slug:question_slug></b>/add_vote/', views.AddVoteQuestionView.as_view()),
...
]
Вы уже попробовали и преуспели с этим методом. Во всяком случае, я здесь и смотри:)
from django.urls import re_path
urlpatterns = [
re_path(r'question/<b>(?P<question_slug>[\w-]+)/</b>add_vote/$', views.AddVoteQuestionView.as_view()),
...
]