无法理解为什么这个 url 映射有效?

Cant understand why this url mapping is working?

我目前正在阅读各种 Django 教程,以了解 url 映射的工作原理。我遇到了一个这样的例子

这是我的 urls.py

url(r'admin_page_edit$',"adminApp.views.showClientDetails",name="admin_page_edit"), 

这是在我的 html 页面中,当前正在向用户显示

<a href="{% url "admin_page_edit" %}?uname=SomeVal&par2=value" > 

现在 URL 浏览器在点击上面的 href link 时显示。没问题

http://127.0.0.1:8000/admin_page_edit?uname=SomeVal&par2=value

以上URL登陆相应的view

adminApp.views.showClientDetails

问题来了,这似乎一切正常,但我很困惑为什么会这样?因为浏览器的 url 是

http://127.0.0.1:8000/admin_page_edit?uname=SomeVal&par2=value

与 url

中的正则表达式字符串不匹配
admin_page_edit$ 

(上面的正则表达式表示如果字符串以 admin_page_edit 结尾)但是 url 字符串不以 admin_page_edit 结尾,而是

  http://127.0.0.1:8000/admin_page_edit?uname=SomeVal&par2=value

因此以 par2=value

结尾

我的问题是,当 url 正则表达式不匹配时,为什么这会命中视图中的相应定义?

Django url 解析器不处理查询字符串(? 之后的部分)。为什么?因为它们不需要处理。您可以将任何查询字符串附加到任何 url:

赞:https://www.facebook.com/?request=pleasedonotwork 效果一样。除非重定向( 或某些日志记录)是基于 url 中发送的查询完成的,否则您可以将 url 的查询部分视为 被动.

可以通过 request.GET QueryDict

在 Django 视图中访问这些查询字符串