Frage

Dies ist mein django URLconf:

urlpatterns = patterns('',
    ('^hello/$', hello),
    (r'^polls/$', 'mysite.polls.views.index'),
    (r'^polls/(?P<poll_id>\d+)/$', 'mysite.polls.views.detail'),
    (r'^polls/(?P<poll_id>\d+)/results/$', 'mysite.polls.views.results'),
    (r'^polls/(?P<poll_id>\d+)/vote/$', 'mysite.polls.views.vote'),
    (r'^admin/', include(admin.site.urls)),
)

Ich verstehe nicht, was die r in dieser Regex tut:

r'^polls/$

Ich verstehe nicht, was das Regex tut:

(?P<poll_id>\d+)

Und ich verstehe nicht, warum in:

(r'^admin/', include(admin.site.urls))

Es gibt keine $ Zeichen und es funktioniert immer noch ...

Ich verstehe nicht, was URLconf ich muss hinzufügen, um eine Website unter http://127.0.0.1:8000/ siehe

War es hilfreich?

Lösung

Die ‚r‘ bezeichnet einen ‚raw‘ Zeichenfolge, die das Leben leichter macht, wenn zu schreiben Regexes versucht (Sie nicht über das Escape-Zeichen Flucht am Ende). http://docs.python.org/library/re.html#raw -string-Notation

Was die zweite Frage geht, schafft es eine benannte Match-Gruppe mit 1 oder mehr Ziffern und übergibt diesen Wert auf die Ansicht als ‚poll_id‘. http://docs.djangoproject.com/en/1.2/ Themen / http / Urls / # named-Gruppen

Der Grund, es nicht ein $ auf dem Admin-String ist, dass Sie alle Urls mögen, die mit / admin starten an die Admin App weitergeleitet werden. $ Ist ein spezielles Zeichen, das das Ende eines Strings definiert. Also, wenn es ein $ waren, dann nur die URL / admin würde an den Admin App übergeben werden, nicht / admin / foo oder / admin / foo / bar.

Andere Tipps

Mein Python Regex ist rostig, aber hier geht:

r'^polls/$

die ^ Mittel beginnt mit.
Die $ bedeutet das Ende

(?P<poll_id>\d+) bedeutet eine ganze Zahl \d+, die in meinem Code wird in eine Variable gesetzt werden poll_id

(r'^admin/', include(admin.site.urls))
nicht ein $ haben, weil Sie nicht können die URL wollen dort zu beenden. Sie wollen admin / somethingelse auf Ihre admin.sites.urls-Klasse übergeben werden.

Die r bedeutet die bereitgestellte Zeichenfolge ist roh und Escape-Zeichen ignoriert werden sollte. Die (r'^admin/', include(admin.site.urls)) Linie hat keine $, weil es eine Include für eine andere URL confs ist. Also das Ende $ ist irgendwo in der admin.site.urls.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top