2010-02-26 2 views
5

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

ответ

8

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

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

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

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

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

, чтобы захватить только идентификатор и игнорировать ничего после ID. (Примечание: нет $ символ конца строки.)

+0

Хм, спасибо за этот совет. Было бы трудно получить идентификатор, если бы он был example.com/watch/1-this-is-a-slug? Кроме того, если эти вопросы кажутся глупыми, извините! Это первый сайт, который я фактически разрабатываю вместо того, чтобы просто конструировать и планировать. Так спасибо за вашу помощь. – 2010-02-26 04:29:07

+0

@ Matt, это было бы не так сложно, но зачем вы этого хотите? Практически стандартная практика делает то, что делает Stack Overflow. –

+0

Честно говоря, не знаю, почему я хочу это сделать. Если/id/slug является приемлемым, я сделаю это. Еще раз спасибо. – 2010-02-26 04:37:40

-3

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

+4

Как насчет дублирующих названий? Или тот факт, что персонажи просто удаляются из пули? Вопросы под названием «Указатели в C++» и «Указатели в C» будут иметь одинаковый пул, и было бы невозможно создать вопрос с существующим названием, иначе старый вопрос станет недоступным. Идентификатор - это уникальный идентификатор, а пуля - для удобства человека/поисковой системы и т. Д. –

0

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^