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")
вернет только последнее из них.