У меня были некоторые проблемы с регулярным выражением в urls.py (я новичок в django, а также в регулярных выражениях в целом)
Вот мой оригинальный urls.py
url(r'^name/(?P<name>\w+)/$', 'course.views.name'),
url(r'^', 'course.views.index'),
И я пытался получить к нему доступ, используя это:
http://127.0.0.1:8000/name/blah/
Моя точка зрения выглядит так:
def index(request):
return HttpResponse("Hello, sam. You're at the course index.")
def name(request, name):
return HttpResponse("Hello, %s. You're at the course index." % name)
Результат, который я получил, состоял в том, что независимо от того, какой ввод я вводил, я регулярно получал функцию «индекс», а не функцию «имя». Я думал, что проблема была с первым регулярным выражением.
Но затем я изменил второй на:
url(r'^$', 'course.views.index'),
И ЭТО работает именно так, как я понял!
Я понимаю, что "$" означает конец строки, но разве первое регулярное выражение не должно оцениваться первым? Каков порядок сопоставления этих выражений?
Добавление «$» к каждому URL-адресу не такое уж большое дело, но я хотел бы понять, почему я его туда добавляю.
Я использую Django1.4 и Python 2.7