Django url path regex: захват нескольких значений из url

Как захватить несколько значений из URL в Django?

Conditions: Я хотел бы получить идентификаторы из URL. Иды различаются по длине (состоят только из цифр), и в URL может быть несколько идентификаторов. Посмотрите следующие два примера:

http://127.0.0.1:8000/library/check?id=53&id=1234

http://127.0.0.1:8000/library/check?id=4654789&id=54777&id=44

Решение может включать regex.

urlpatterns = [
    path("", view=my_view),
    path("<solution_comes_here>", view=check_view, name="check_view"),
]

P.S. все решения, которые я нашел на этой платформе и документация по Django объясняют только случаи захвата отдельных значений из URL

Вы используете:

urlpatterns = [
    path('', view=my_view),
    path('check/', view=check_view, name='check_view'),
]

Действительно, строка запроса не является частью пути. Это можно определить с помощью request.GET. Таким образом, вы можете получить идентификаторы с помощью:

def check_view(request):
    ids = request.GET.getlist('id')  # ['3654789', '54777', '44']
    # …

Однако нет гарантии, что id будут только числовыми, поэтому вам нужно будет подтвердить это в самом представлении.

request.GET является Querydict. У него больше методов, чем у обычного dict.

Для этого вам нужен request.GET.getlist("id"), который вернет список значений id. .get("id") вернет только последнее из них.

Вернуться на верх