Reg Ex Django URL Conf
Вопрос
Это мой 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)),
)
Я не понимаю, что делает R в этом Regex:
r'^polls/$
Я не понимаю, что делает это Regeex:
(?P<poll_id>\d+)
И я не понимаю, почему в:
(r'^admin/', include(admin.site.urls))
Здесь нет $
Знак и он все еще работает ...
Я не понимаю, какой urlconf я должен добавить, чтобы увидеть сайт под http://127.0.0.1:8000/
Решение
«R» обозначает «сырую» строку, которая облегчает жизнь при попытке написать REGEXES (вы не заканчиваетесь избегать символов Escape). http://docs.cython.org/Library/re.html#raw-string-notation.
Что касается второго вопроса, он создает названную группу совпадений из 1 или более цифр и передает это значение для представления как «POLL_ID». http://docs.djangoProject.com/ru/1.2/topics/http/urls/#Zamed-groups
Причина, по которой нет $ в строке администратора, заключается в том, что вы хотите, чтобы все URL-адреса, которые начинаются с / admin, которые будут переданы в приложение администратора. $ - это специальный символ, который определяет конец строки. Поэтому, если бы был $, то только URL / admin будет передан в Admin App, а не / admin / foo или / admin / foo / bar.
Другие советы
Прочитайте документы, http://docs.djangoproject.com/en/1.2/topics/http/urls/#topics-http-urls.
Мой Python Regex ржавый, но здесь идет:
r'^polls/$
то ^
значит начинается с.
То $
означает конец
(?P<poll_id>\d+)
означает целое число \d+
который в моем коде будет введен в переменную poll_id
(r'^admin/', include(admin.site.urls))
не имеет $, потому что вы не хотите, чтобы URL-адреса заканчивается там. Вы хотите, чтобы admin / Motchelse будет передан в ваш класс admin.sites.urls.
То r
означает, что предусмотренная строка - это сырье, и escape символы должны игнорироваться. То (r'^admin/', include(admin.site.urls))
У линии нет $
Потому что это включает в себя для другого URL-конфета. Итак, конец $
где-то в admin.site.urls
.