Voici mon URLconf de Django:
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)),
)
Je ne comprends pas ce que fait le r dans cette regex:
r"^polls/$
Je ne comprends pas ce que fait ce regex:
(?P<poll_id>d+)
Et je ne comprends pas pourquoi dans:
(r"^admin/", include(admin.site.urls))
Il n'y a pas $
signe et ça marche toujours ...
Je ne comprends pas ce que URLconf je dois ajouter, pour voir un site sous http://127.0.0.1:8000/
Réponses:
5 pour la réponse № 1Le "r" désigne une chaîne "brute", ce qui facilite la vie lorsque vous essayez d’écrire des expressions rationnelles (vous ne finirez pas par échapper aux caractères d’échappement). http://docs.python.org/library/re.html#raw-string-notation
En ce qui concerne la deuxième question, elle crée un groupe de correspondance nommé de 1 ou plusieurs chiffres et transmet cette valeur à la vue en tant que "poll_id". http://docs.djangoproject.com/en/1.2/topics/http/urls/#named-groups
La raison pour laquelle il n’ya pas de "$ sur la chaîne d’administration estque vous souhaitez que toutes les URL commençant par / admin soient transmises à l'application d'administration. $ est un caractère spécial qui définit la fin d'une chaîne. Donc, s'il y avait un $, alors seulement l'url / admin serait passé à l'application admin, pas / admin / foo ou / admin / foo / bar.
1 pour la réponse № 2
lire les docs, http://docs.djangoproject.com/en/1.2/topics/http/urls/#topics-http-urls
1 pour la réponse № 3
Mon regex python est rouillé mais voici:
r"^polls/$
la ^
signifie commence par.
le $
signifie la fin
(?P<poll_id>d+)
signifie un entier d+
qui dans mon code sera mis dans une variable poll_id
(r"^admin/", include(admin.site.urls))
n’a pas de $ parce que vous ne voulez peut-être pas que l’URL se termine là. Vous voulez que admin / quelquechose soit transmis à votre classe admin.sites.urls.
0 pour la réponse № 4
le r
signifie que la chaîne fournie est brute et que les caractères d'échappement doivent être ignorés. le (r"^admin/", include(admin.site.urls))
la ligne n'a pas $
car c’est une inclusion pour une autre url confs. Donc la fin $
est quelque part dans le admin.site.urls
.