Domanda

Questi è il mio 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)),
)

Non capisco quello che la r in questo regex fa:

r'^polls/$

Non capisco che cosa fa questo Regex:

(?P<poll_id>\d+)

E io non capisco perché in:

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

Non v'è alcun segno $ e funziona ancora ...

Non capisco che cosa URLconf devo aggiungere, per vedere un sito in http://127.0.0.1:8000/

È stato utile?

Soluzione

Il 'r' indica una stringa 'crudo', che rende la vita più facile quando si cerca di regex di scrittura (non si finisce per fuggire i caratteri di escape). http://docs.python.org/library/re.html#raw -string notazione

Per quanto riguarda la seconda domanda va, si crea un gruppo partita denominata di 1 o più cifre, e passa che il valore per la vista come 'poll_id'. http://docs.djangoproject.com/en/1.2/ argomenti / http / URL / #-gruppi denominati

La ragione non c'è un $ sulla stringa di amministrazione è che si desidera che tutti gli URL che iniziano con admin / da passare l'applicazione di amministrazione. $ È un carattere speciale che definisce la fine di una stringa. Quindi, se ci fosse un $, allora solo l'url / admin sarebbe passato per l'applicazione di amministrazione, non / admin / foo o / admin / foo / bar.

Altri suggerimenti

Il mio python regex è arrugginito ma qui va:

r'^polls/$

i mezzi ^ inizia con.
Il $ significa la fine

(?P<poll_id>\d+) significa un \d+ intero che nel mio codice sarà messo in una variabile poll_id

(r'^admin/', include(admin.site.urls))
non ha un $, perché non si può decidere l'url finisce qui. Si vuole admin / somethingelse per essere passato alla classe admin.sites.urls.

Il r significa che la stringa fornita è crudo e caratteri di escape deve essere ignorato. La linea (r'^admin/', include(admin.site.urls)) non ha $ perché è un comprendono per altri confs url. Così il $ finale è da qualche parte nel admin.site.urls.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top