【发布时间】:2011-05-23 14:11:42
【问题描述】:
documentation of Django 中是文章 URL 的示例模式:
(r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'news.views.article_detail'),
因此,只有 2011/05/23/ 会匹配,但不会匹配 2011/5/23/
在文档的另一部分,permalinks decorator 被解释,模式是
(r'/archive/(?P<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})/$', archive_view)
以及创建永久链接的代码
@models.permalink
def get_absolute_url(self):
return ('archive_view', (), {
'year': self.created.year,
'month': self.created.month,
'day': self.created.day})
特别是月份已从\d{2} 更改为\d{1,2},因此2011/05/23/ 和2011/5/23/ 现在将匹配; get_absolute_url 方法将创建第二个链接,不带前导零。
要为第一个正则表达式(\d{2})创建一个永久链接,我可以在方法中写str(self.created.month).zfill(2),但这似乎有点麻烦和多余(如果我更改 URLconf,我将需要更改 @ 987654335@ 方法)给我。
此外,我们现在有多个 url,它们都显示相同的内容(2011/05/03/、2011/5/03/、2011/05/3/ 等),这可能是个问题,例如对于搜索引擎?至少会导致url不一致。
是否有一种(简单的)方法可以将所有 url 重定向到零填充的那些(2011/5/3/ › 2011/05/03/)并且总是自动构建它们零填充,所以我不需要像 @987654341 这样的方法搞乱@ with str() 和 zfill 可以只传递数字吗?
【问题讨论】:
-
是的,你会因为 url 指向相同的页面/数据而受到 SEO 的打击,除了告诉你我真的无能为力很抱歉