无法为 django url 匹配正则表达式(之前在 stackowerflow 上描述的方法不起作用)

Can't match regex for django url (methods described earlier on stackowerflow don't work)

无法匹配 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 检查失败

朋友们,告诉我怎么做吧,不然我已经被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 配置中的参数。