Django расшифрует URL для вас.При доступе к self.kwargs['name']
это будет 'ABCD|1234'
, а не 'ABCD%7C1234'
.
Однако у вас есть отдельная проблема.Ваша текущая группа регулярных выражений [\w-]+
будет соответствовать только заглавным буквам AZ, строчным AZ, цифрам 0-9, подчеркиванию _
и дефису -
.Вам придется изменить это, если вы хотите сопоставить символы типа |
.
Вы можете просто добавить |
в группу:
# put | before - otherwise you have to escape hypen with \-
url(r'^edit/(?P<name>[\w|-]+)/$', UpdateView.as_view(), name="update")
Или, если вы хотите добавить в группу много других символов, вы можете сопоставить что угодно, кроме косой черты.с:
url(r'^edit/(?P<name>[^/]+)/$', UpdateView.as_view(), name="update")