Не получается получить правильный URL-адрес Django с номерами - PullRequest
0 голосов
/ 07 ноября 2011

Я пытаюсь получить структуру URL, подобную этой.

http://example.com/blog/1/title-name-goes-here

В моем основном файле urls есть эта строка, среди прочего.

url(r'^blog/', include('blog.urls')),

в моем блоге. У меня есть

urlpatterns = patterns('',
    (r'', 'blog.views.index'),
    (r'^(?P<entry_id>\d+)/(?P<slug>[a-zA-Z0-9_.-]+)/$', 'blog.views.entry'),
)

Моя проблема в том, что когда я захожу на /blog/1/some-title, вызывается представление индекса, а не метод представления записи Также не имеет значения, в каком порядке расположены маршруты.

Я думаю, что это неправильное выражение. Я все еще не очень хорошо с ними.

1 Ответ

1 голос
/ 07 ноября 2011

попробовать:

urlpatterns = patterns('',
    (r'^(?P<entry_id>\d+)/(?P<slug>[-\w]+)/$', 'blog.views.entry'),
    (r'^$', 'blog.views.index'),
)    

Обратите внимание на знак карата и доллара в нижнем шаблоне, который обозначает пустой шаблон. Вы должны (в общем случае) расположить свои шаблоны в порядке того, сколько групп должно соответствовать, например. / id / slug / title / вышеуказанный / id / slug / вышеуказанный / id /, поскольку URLconf выбирает первое возможное совпадение. Вы можете использовать RegexPal для проверки ваших шаблонов онлайн, что удобно

Я также изменил слаг на более простой шаблон слагов, используя \ w (слово, подчеркивание числа - я не уверен, если вы специально хотите сопоставлять точки в слагах?)

...