В документации Django приведен пример шаблона для URL статьи:
(r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'news.views.article_detail'),
Таким образом, только 2011/05/23/
будет соответствовать, но не 2011/5/23/
В другой части документов, где поясняется постоянная ссылка декоратор , шаблон
(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, мне нужно будет изменить get_absolute_url
метод тоже) мне.
Кроме того, теперь у нас есть несколько URL, которые отображают одинаковое содержимое (2011/05/03/
, 2011/5/03/
, 2011/05/3/
и т. Д.), Может ли это быть проблемой, например, для поисковых систем? По крайней мере, это может привести к несовместимым URL-адресам.
Есть ли (простой) способ перенаправить все URL-адреса на заполненные нулями (2011/5/3/
›2011/05/03/
), а также автоматически всегда создавать их с нулевым заполнением, поэтому мне не нужно возиться с такими методами, как get_absolute_url
с str () и zfill и можете просто передать число?