Как я могу сделать URL в Django похожими на stackoverflow? - PullRequest
6 голосов
/ 26 февраля 2010

Я создаю видео сайт. Я хочу, чтобы мои прямые ссылки на видео выглядели как example.com/watch/this-is-a-slug-1, где 1 - идентификатор видео. Я не хочу, чтобы пуля имела значение, хотя. example.com/watch/this-is-another-slug-1 должен указывать на ту же страницу. На SO, / questions / id - единственная часть URL, которая имеет значение. Как я могу это сделать?

Ответы [ 3 ]

9 голосов
/ 26 февраля 2010

Переполнение стека использует форму

example.com/watch/1/this-is-a-slug

, с которым легче обращаться. Вы открываете банку с червями, если хотите, чтобы идентификатор находился в конце токена слага, с тех пор он (например) ограничит типы слагов, которые вы можете использовать, или просто усложнит себе задачу. 1004 *

Вы можете использовать обработчик URL, например:

(r'^watch/(?P<id>\d+)/', 'watch')

чтобы получить только идентификатор и игнорировать что-нибудь после идентификатора. (Обратите внимание, что нет $ символа конца строки.)

0 голосов
/ 26 февраля 2010

Я не использовал Django, но я раньше использовал фреймворки MVC. Обычно у них есть какая-то функция маршрутизации URL, которая позволяет вам определять шаблон (обычно регулярное выражение), который отображается на контроллер.

Это может быть хорошим началом: http://docs.djangoproject.com/en/dev/topics/http/urls/

Как сказал Джесси Бедер, вам просто понадобится регулярное выражение для сопоставления первого сегмента URL (/ watch) и числового идентификатора, а затем перенаправьте его контроллеру часов, который будет обрабатывать идентификатор и игнорировать слаг.

0 голосов
/ 26 февраля 2010

При всем уважении к Stackoverflow, это неправильный способ сделать это. Вам не нужно иметь два элемента в URL, которые идентифицируют страницу. Идентификатор не имеет значения - это мусор. Вы должны иметь возможность однозначно идентифицировать страницу только из одного слага.

...