2009-01-16 139 views
3

我正在开发一个使用Django的博客应用程序。目前,URL /blog/显示博客的头版(前五个帖子)。游客然后可以浏览或“浏览”博客条目。这部分映射到/blog/browse/{page}/,其中page当然是一个整数,指定应该显示哪些博客条目的“页面”。但是,我想,或许“页码”应该是查询字符串的属性,而不是(例如,/blog/browse/?page=2),因为浏览页面的内容不是静态的(即,只要我添加另一个帖子,/blog/browse/2/将有不同的内容比之前添加该职位)。这似乎是像Stack Overflow和Reddit这样的网站做的事情。例如,当通过堆栈溢出问题进行分页时,使用"page" attribute;同样,Reddit使用"count" attribute在网址中“嵌入”页码的最佳方式是什么?

扩展这一想法,我意识到,我用的是相同的模板来呈现两个/blog//blog/browse/的内容,所以它甚至可能是有意义的只是通过博客的内容使用URL像/blog/?page=2页。

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

回答

3

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

此外,尽管我无法证明这一点,但它给了我一种温暖的模糊感觉,即Google有更好的机会来弄清楚该页面内容的性质(即它是进一步数据的分页索引,并且将可能会经常更新)与嵌入在URL中的页面#相比,这将更加不透明。这就是说,我认为这是99%的个人喜好,我非常怀疑它有任何真正的功能差异,所以请尽量选择更容易,更适合当前的做事方式。

编辑:忘了提及我的意见是Django的具体...我有几个Django应用程序,所以我比较熟悉他们建立他们的URL的方式,我仍然使用“pg”GET参数而不是直接将其嵌入到网址中。

0

似乎有两件事情正在进行。一个静态页面,不会改变,可用于permalinking,就像一篇文章,以及一个经常更新的动态页面。没有理由不能同时使用两者。 URL重写应该允许这个工作很好。没有理由让实现控制界面,总是至少有一种方法来对每只猫进行皮肤处理。

+0

我确实使用永久链接链接到特定的帖子;我只是想知道应用程序的分页/浏览方面。 – mipadi 2009-01-16 20:09:51

4

对于我的钱,解决此问题的最佳通用方法是使用django-pagination实用程序。这非常容易使用,你的网址应该有你想要的格式。

相关问题