我目前正在浏览各种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正则表达式不匹配时,为什么这会在视图中达到相应的定义?
答案 0 :(得分:2)
Django url解析器不处理查询字符串(?
之后的部分)。为什么?因为他们不必处理。您可以将任何查询字符串附加到任何URL:
赞:https://www.facebook.com/?request=pleasedonotwork完全相同。除非根据在网址中发送的查询完成重定向(或某些日志记录),否则您可以将网址的查询部分视为被动。
可以通过request.GET
QueryDict