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

时间:2016-06-04 21:58:44

标签: python django url url-mapping

我目前正在浏览各种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" > 

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

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

以上网址落在相应的视图中

adminApp.views.showClientDetails

现在这是问题所在,这似乎一切正常,但我很困惑,为什么这是有效的?因为浏览器的网址是

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正则表达式不匹配时,为什么这会在视图中达到相应的定义?

1 个答案:

答案 0 :(得分:2)

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

赞:https://www.facebook.com/?request=pleasedonotwork完全相同。除非根据在网址中发送的查询完成重定向(或某些日志记录),否则您可以将网址的查询部分视为被动

可以通过request.GET QueryDict

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