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





Похоже, что происходят две вещи. Статическая страница, которая не изменяется и может использоваться для постоянных ссылок, например, статья, а также динамическая страница, которая будет часто обновляться. Нет причин, по которым вы не можете использовать оба. Перезапись URL-адресов должна позволить этому работать довольно хорошо. Нет причин позволять реализации управлять интерфейсом, всегда есть хотя бы один способ снять шкуру с каждой кошки.
На мой взгляд, лучший универсальный подход к этой проблеме - использовать утилиту django-pagination. Он невероятно прост в использовании, и ваши URL-адреса должны иметь желаемый формат.
Я предпочитаю использовать параметр GET URL, например URL? Pg = #. Это очень распространено и предоставляет пользователям стандартный визуальный ключ к тому, что происходит. Если, например, я хочу добавить одну из этих страниц в закладки или создать внешнюю ссылку, я, не задумываясь, знаю, что могу отбросить параметр pg, чтобы он указывал на «последний» указатель первой страницы. Со встроенным # это не так очевидно ... можно ли оставить параметр? Всегда ли мне нужно устанавливать его на 1? Это совершенно другой базовый URL? Для меня разбивка на страницы с помощью параметра GET делает URL-адрес немного более разумным, поскольку существует приемлемое значение по умолчанию, если параметр опущен и параметр не влияет на базовый URL-адрес.
Кроме того, хотя я не могу это доказать, у меня возникает теплое нечеткое ощущение, что у Google больше шансов выяснить природу содержания этой страницы (то есть, что это постраничный индекс для дополнительных данных и, возможно, будет часто обновляться). по сравнению со страницей, # встроенной в URL-адрес, которая будет более непрозрачной.
Тем не менее, я бы сказал, что это 99% личных предпочтений, и я очень сомневаюсь, что есть какая-либо реальная функциональная разница, поэтому выбирайте то, что проще и лучше соответствует вашему текущему способу работы.
Обновлено: Забыл упомянуть, что мое мнение зависит от Django ... У меня есть несколько приложений Django, поэтому я относительно знаком с тем, как они создают свои URL-адреса, и я все еще использую параметр GET "pg" с этими приложениями вместо встраивания это прямо в URL-адресе.
Я использую постоянный URL-адрес для ссылки на конкретное сообщение; Мне просто интересно узнать об аспекте пейджинга / просмотра в приложении.