Ich mache gerade verschiedene Django-Tutorials durch, um zu verstehen, wie das URL-Mapping funktioniert. Ich kam in einem Beispiel, das so etwas wie dieseKann ich nicht verstehen, warum dieses URL-Mapping funktioniert?
ist dies in meinem urls.py ist
url(r'admin_page_edit$',"adminApp.views.showClientDetails",name="admin_page_edit"),
das ist in meiner HTML-Seite, die derzeit den Benutzer angezeigt wird
<a href="{% url "admin_page_edit" %}?uname=SomeVal&par2=value" >
Jetzt die URL, die der Browser beim Klicken auf den obigen href-Link anzeigt. Kein Problem dort
http://127.0.0.1:8000/admin_page_edit?uname=SomeVal&par2=value
Und die oben genannte URL landet in der entsprechenden Ansicht
adminApp.views.showClientDetails
Jetzt ist hier die proble, scheint dies für alle Arbeiten, aber ich bin verwirrt, warum dies funktioniert? da die URL des Browsers ist
http://127.0.0.1:8000/admin_page_edit?uname=SomeVal&par2=value
, die nicht den Regex-String in der URL überein
admin_page_edit$
(Die obige regex bedeutet, wenn die Zeichenfolge mit admin_page_edit
enden), aber die URL-Zeichenfolge nicht zu Ende mit admin_page_edit
stattdessen ist es
http://127.0.0.1:8000/admin_page_edit?uname=SomeVal&par2=value
somit mit par2=value
Meine Frage ist, warum trifft dies die entsprechende Definition in der Ansicht, wenn die URL-Regex nicht übereinstimmt?
Die zugegriffen werden? bedeutet normalerweise, was folgt, werden Werte sein. Die Seite endet vor dem? und was folgt, sind die Werte, die an die POST-Methode für diese Seite gesendet werden. – AK47
Die Zuordnung wird auf den Pfad der URL abgebildet, in Ihrem Fall ist dies "/ admin_page_edit", was übereinstimmt. Der '? ...' Teil einer URL ist die [query] (https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax) (** not ** POST data btw). –