Каков наилучший способ «встроить» номер страницы в URL? - PullRequest
3 голосов
/ 16 января 2009

Я разрабатываю приложение для блога с использованием Django. В настоящее время URL /blog/ отображает первую страницу блога (первые пять постов). Затем посетители могут просматривать или «пролистывать» записи блога. Эта часть отображается в /blog/browse/{page}/, где page, конечно, является целым числом, которое указывает, какую «страницу» записей блога следует отображать.

Мне пришло в голову, что, возможно, вместо этого «номер страницы» должен быть атрибутом строки запроса (например, /blog/browse/?page=2), поскольку содержимое страниц просмотра не является статичным (т. Е. Как только я добавьте еще один пост, /blog/browse/2/ будет иметь содержимое, отличное от до пост был добавлен). Похоже, именно так работают сайты типа Stack Overflow и Reddit. Например, при листании вопросов по переполнению стека используется атрибут "page" ; аналогично Reddit использует атрибут «count» .

Расширяя это мышление, я понимаю, что использую один и тот же шаблон для визуализации содержимого /blog/ и /blog/browse/, поэтому может даже иметь смысл просто использовать URL-адрес, такой как /blog/?page=2, для пролистывания содержимого блог.

Есть предложения? Есть ли «стандартный» способ сделать это или, по крайней мере, метод «наилучшей практики»?

Ответы [ 3 ]

4 голосов
/ 18 января 2009

За мои деньги лучший универсальный подход к этому вопросу - использовать утилиту django-pagination . Он невероятно прост в использовании, и ваши URL должны иметь желаемый формат.

3 голосов
/ 18 января 2009

Я предпочитаю использовать параметр GET URL, как в URL? Pg = #. Это очень распространено и предоставляет стандартную визуальную подсказку пользователям о том, что происходит. Например, если я хочу добавить в закладки одну из этих страниц или создать внешнюю ссылку, я знаю, не думая, что могу сбросить параметр pg, чтобы он указывал на «последний» индекс главной страницы. С внедренным # это не так очевидно ... я не включаю параметр? Я всегда должен устанавливать это в 1? Это совсем другой базовый URL? На мой взгляд, разбиение на страницы через параметр GET делает несколько более разумным URL-адрес, поскольку существует приемлемое значение по умолчанию, если параметр не указан и параметр не влияет на базовый URL-адрес.

Кроме того, хотя я не могу доказать это, у меня возникает теплое нечеткое ощущение, что у Google больше шансов выяснить природу содержимого этой страницы (то есть, что это индекс с разбивкой по страницам на дополнительные данные, и потенциально часто обновляются) по сравнению со страницей #, встроенной в URL, которая будет более непрозрачной.

Тем не менее, я бы сказал, что это личное предпочтение на 99%, и я очень сомневаюсь, что есть какие-то реальные функциональные различия, так что выбирайте то, что проще и лучше вписывается в ваш нынешний способ ведения дел.

РЕДАКТИРОВАТЬ: Забыл упомянуть, что мое мнение относится к Django ... У меня есть несколько приложений Django, поэтому я относительно знаком с тем, как они создают свои URL, и я все еще использую параметр "pg" GET с этими приложениями вместо того, чтобы встраивать его непосредственно в URL.

0 голосов
/ 16 января 2009

Кажется, что происходит две вещи. Статическая страница, которая не изменится и может быть использована для постоянной ссылки, как статья, а также динамическая страница, которая будет часто обновляться. Нет причин, по которым вы не можете использовать оба. Перезапись URL должна позволять этому работать очень хорошо. Нет смысла позволять реализации контролировать интерфейс, всегда есть по крайней мере один способ обшить каждую кошку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...