Раньше у меня было 2 конкретных URL, которые читаются так:
'/ GameData / теннис /'
'/ GameData / теннис / теннисный +2018'
«Теннисная» струна происходит от спортивной модели, а «теннис-2018» - от модели Season.
class Sport(models.Model):
name = models.CharField(max_length=50)
class Season(models.Model):
...
slug = models.SlugField(...)
Первый URL будет отображать данные о теннисе в текущем сезоне (2019), а второй - в предыдущем сезоне.
Я хотел сделать вещи лучше, поэтому я хочу использовать эти новые URL для того же результата:
'/ GameData / теннис-2019'
'/ GameData / теннис-2018'
Мне удалось осуществить изменение, и теперь я имею дело с перенаправлениями для старых URL.
Второй URL ('/ gamedata / tennis / tennis-2018') без проблем: я могу получить пулю сезона и легко перенаправить на /gamedata/tennis-2019.
Проблема с перенаправлением / gamedata / tennis на gamedata / tennis-2019.
Посмотрите мои URL:
...
url(r'^(?P<season_slug>[^/]+)/$',
views.SportdataView.as_view(),
name="sportdataview"),
url(r'^(?P<sport_name>[^/]+)/$',
views.SportdataRedirectView.as_view(),
name="redirect-old-sportdata")
По какой-то причине, которую я не понимаю, Джанго выдвигает ту же точку зрения для этих двух URL. Фактически, если я инвертирую порядок URL-адресов, я всегда получаю представление перенаправления; даже в случае /gamedata/tennis-2018.
Что я делаю не так с регулярным выражением URL?
PS Я сумел разобраться с хардкодом URL переадресации следующим образом:
url(r'^tennis/$',
views.SportdataRedirectView.as_view(),
name="redirect-old-sportdata")
У меня только 4 вида спорта, так что это не большая проблема, это быстрое решение, но я хотел бы узнать больше о лучшем решении, когда это возможно.
Спасибо,
Витторио