【问题标题】:What's the best way to "embed" a page number in a URL?在 URL 中“嵌入”页码的最佳方式是什么?
【发布时间】:2009-01-16 20:02:53
【问题描述】:

我正在使用 Django 开发一个博客应用程序。目前,URL /blog/ 显示博客的首页(前五篇文章)。然后访问者可以浏览或“翻阅”博客条目。这部分映射到/blog/browse/{page}/,其中page当然是一个整数,用于指定应显示博客条目的哪个“页面”。

不过,我想到,也许“页码”应该是查询字符串的一个属性(例如,/blog/browse/?page=2),因为浏览页面的内容不是静态的(即,只要我添加另一个帖子,/blog/browse/2/ 将具有与添加帖子之前 不同的内容)。这似乎是 Stack Overflow 和 Reddit 等网站做事的方式。例如,当翻阅 Stack Overflow 上的问题时,使用 "page" attribute;同样,Reddit 使用"count" attribute。

扩展这个想法,我意识到我使用相同的模板来呈现/blog/ 和/blog/browse/ 的内容,因此使用像/blog/?page=2 这样的 URL 来翻阅博客。

有什么建议吗?是否有这样做的“标准”方法,或者至少有一种“最佳实践”方法可以使用?

【问题讨论】:

    标签: django url web-applications


    【解决方案1】:

    就我而言,解决此问题的最佳通用方法是使用django-pagination 实用程序。它非常易于使用,并且您的 URL 应该具有您想要的格式。

    【讨论】:

      【解决方案2】:

      我更喜欢使用 GET URL 参数,如 URL?pg=#。这很常见,并为用户提供了关于正在发生的事情的标准视觉线索。例如,如果我想为其中一个页面添加书签或建立一个外部链接,我不假思索地知道我可以删除 pg 参数以指向“最新”首页索引。使用嵌入的#,这不那么明显......我要不要省略参数?我总是必须将其设置为 1 吗?它是完全不同的基本 URL 吗?对我来说,通过 GET 参数进行分页会使 URL 更合理一些,因为如果省略该参数并且该参数不影响基本 URL,则可以接受默认值。

      此外,虽然我无法证明这一点,但它给了我一种温暖的模糊感觉,即 Google 有更好的机会找出该页面内容的性质(即它是进一步数据的分页索引,并且可能经常更新)与嵌入在 URL 中的页面 # 相比,这将更加不透明。

      也就是说,我会说这是 99% 的个人偏好,我非常怀疑是否存在任何真正的功能差异,因此请选择更容易且更适合您当前做事方式的方式。

      编辑:忘了说我的意见是特定于 Django 的……我有一些 Django 应用程序,所以我对它们构建 URL 的方式比较熟悉,我仍然对这些应用程序使用“pg”GET 参数而不是直接嵌入到 URL 中。

      【讨论】:

        【解决方案3】:

        似乎发生了两件事。一个不会改变的静态页面,可以用于永久链接,比如一篇文章,以及一个会经常更新的动态页面。没有理由不能同时使用两者。 URL 重写应该可以很好地工作。没有理由让实现来控制界面,总有至少一种方法可以给每只猫剥皮。

        【讨论】:

        • 我确实使用永久 URL 链接到特定帖子;我只是想知道应用程序的分页/浏览方面。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-25
        • 1970-01-01
        • 2011-09-19
        • 2012-11-06
        • 2010-10-07
        相关资源
        最近更新 更多