Не удается сопоставить регулярное выражение для URL-адреса django (методы, описанные ранее в stackowerflow, не работают)

#python #django #url

Вопрос:

Не удается сопоставить регулярное выражение для URL-адреса django, вам нужно обработать входящий запрос с интерфейса

  "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 /?|amp;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-адресов

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

(Джанго 3.1)

Ответ №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-адреса.

Комментарии:

1. Что не работает? Конфигурация URL — адреса, которой я поделился, не была частью того, что вы пытались сделать в своем вопросе.