Я пытаюсь создать собственный конвертер путей для анализа URL-адресов следующего типа:
http://127.0.0.1:8000/archives/tvseries/129/delete-image/352,353,354/
Чтобы извлечь список целых чисел, разделенных запятыми, из последней части URL-адреса /352,353,354/
и использовать его в представлении в self.kwargs
.
Моя конфигурация URL:
register_converter(archives.converters.CommaSeparatedIntegersPathConverter, 'int_list')
urlpatterns = [
path(
'tvseries/<int:series_pk>/upload-image/<str:filename>/',
archives.views.FileUploadView.as_view(),
name='upload'
),
path(
'tvseries/<int:series_pk>/delete-image/<int_list:image_pk>/',
archives.views.FileUploadView.as_view(),
name='delete-image'
),
]
Конвертер в converters.py
class CommaSeparatedIntegersPathConverter:
regex = '^(\d+(,\d+)*)?$'
def to_python(self, value):
return [int(v) for v in value.split(',')]
def to_url(self, value):
return ','.join(map(str, value))
Я продолжаю получать исключение 404 в этой конфигурации. Пробовал несколько регулярных выражений, которые я нашел в Интернете, в списке целых чисел, разделенных запятыми, - тот же 404.
Что не так?
1 ответ
Вы можете использовать
regex = r'(?<=/)\d+(?:,\d+)*(?=/?$)'
См. демонстрацию регулярных выражений.
Регулярное выражение означает:
(?<=/)
- соответствует местоположению, которому непосредственно предшествует символ/
\d+(?:,\d+)*
- 1+ цифр, а затем 0 или более вхождений запятой и 1+ цифр(?=/?$)
- сразу справа должен быть необязательный/
, а затем конец строки.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.