ich einige Probleme mit dem regulären Ausdruck in urls.py mit (Ich bin ein Anfänger sowie reguläre Ausdrücke im Allgemeinen django)Wie lautet die Regex-Bewertungsreihenfolge urls.py in django?
Hier ist meine ursprüngliche urls.py
url(r'^name/(?P<name>\w+)/$', 'course.views.name'),
url(r'^', 'course.views.index'),
Und ich habe versucht, Zugriff auf sie mit diesem:
http://127.0.0.1:8000/name/blah/
Meine Ansicht wie folgt aussieht:
def index(request):
return HttpResponse("Hello, sam. You're at the course index.")
def name(request, name):
return HttpResponse("Hello, %s. You're at the course index." % name)
Das Ergebnis, das ich bekommen habe, war, dass ich, egal welche Eingabe ich gab, regelmäßig die "Index" -Funktion bekam und nicht die "Name" -Funktion. Ich dachte, das Problem liege bei der ersten Regex.
Aber dann änderte ich das die zweite man:
url(r'^$', 'course.views.index'),
und das funktioniert genau so, wie ich es arbeiten dachte an!
Ich verstehe, dass "$" Ende der Zeile bedeutet, aber sollte nicht der erste Regex zuerst ausgewertet wurden? In welcher Reihenfolge werden diese Ausdrücke abgeglichen?
Hinzufügen eines "$" zu jeder URL ist nicht so ein großer Deal, aber ich würde gerne verstehen, warum ich es dort hinstelle.
Ich verwende Django1.4 und Python 2.7
Hinzufügen eines "$" zu jeder URL ist nicht so ein großer Deal, aber ich würde gerne verstehen, warum ich es dort setze :) – Samudra