Не удается подобрать regex для django url (методы, описанные ранее на stackowerflow, не работают)

Невозможно подобрать regex для django url необходимо обработать входящий запрос с фронтенда

 "GET /api/city_list/9/?q=test HTTP/1.0" 404 Not Found

 "GET /api/city_list/9/?q=tt HTTP/1.0" 404 Not Found

Я попробовал несколько вариантов

path('api/city_list/<int:id>/?q=<str:q>', api_city_list, name='api_city_list'),

не работает

re_path(r'^api/city_list/\d+/\?|&q=\w', api_city_list, name='api_city_list'),

не работает

re_path(r'^api/city_list/<int:id>/(?P<q>\D+)', api_city_list, name='api_city_list'),

не работает

views.py не достигает отладчика.

url checker fails

Друзья, подскажите как это сделать, а то я уже запутался в регулярных выражениях для Django

(Django 3.1)

Вам не нужно добавлять соответствие строки запроса в пути url, поэтому вы можете изменить url на просто:

path('api/city_list/<int:id>/', api_city_list, name='api_city_list'),

Затем в вашем представлении, если вы хотите получить доступ к параметрам запроса, вы можете использовать request.GET.

def api_city_list(request, id):
    q = request.GET.get('q')
    ...

Все параметры запроса в этом url будут автоматически переданы в request.GET, поэтому нет необходимости согласовывать их в конфигурации url.

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