Questo è 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 cosa fa la r in questa regex:
r"^polls/$
Non capisco cosa fa questo Regex:
(?P<poll_id>d+)
E non capisco perché in:
(r"^admin/", include(admin.site.urls))
Non c'è $
firmare e funziona ancora ...
Non capisco che URLconf devo aggiungere per vedere un sito sotto http://127.0.0.1:8000/
risposte:
5 per risposta № 1La "r" indica una stringa "grezza", che semplifica la vita quando si tenta di scrivere regex (non si finisce per sfuggire ai caratteri di escape). http://docs.python.org/library/re.html#raw-string-notation
Per quanto riguarda la seconda domanda, crea un gruppo di corrispondenze denominato di 1 o più cifre e passa quel valore alla vista come "poll_id". http://docs.djangoproject.com/en/1.2/topics/http/urls/#named-groups
Il motivo per cui non c'è un $ t nella stringa di amministrazione èche desideri che tutti gli URL che iniziano con / admin vengano passati all'app di amministrazione. $ è un carattere speciale che definisce la fine di una stringa. Quindi se ci fosse un $, allora solo l'URL / admin verrebbe passato all'app admin, non / admin / foo o / admin / foo / bar.
1 per risposta № 2
leggi i documenti, http://docs.djangoproject.com/en/1.2/topics/http/urls/#topics-http-urls
1 per risposta № 3
Il mio python regex è arrugginito ma qui va:
r"^polls/$
il ^
significa inizia con.
Il $
significa la fine
(?P<poll_id>d+)
significa un numero intero d+
che nel mio codice verrà inserito in una variabile poll_id
(r"^admin/", include(admin.site.urls))
non ha un $ perché potresti non volere che l'URL finisca qui. Vuoi che admin / qualcosa sia passato alla tua classe admin.sites.urls.
0 per risposta № 4
Il r
significa che la stringa fornita è grezza e i caratteri di escape devono essere ignorati. Il (r"^admin/", include(admin.site.urls))
la linea non ha $
perché è un include per un altro URL conf. Quindi la fine $
è da qualche parte nel admin.site.urls
.