Джанго URL-адреса новых представлений и новые перенаправления (для старых представлений) запутаться - PullRequest
0 голосов
/ 05 июня 2019

Раньше у меня было 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 вида спорта, так что это не большая проблема, это быстрое решение, но я хотел бы узнать больше о лучшем решении, когда это возможно.

Спасибо, Витторио

...