Django网址的新视图和新重定向(对于旧视图)会感到困惑

时间:2019-06-05 08:35:35

标签: django url redirect

我以前有2个特定的URL,其内容如下: '/ gamedata /网球/' '/ gamedata / tennis / tennis-2018'

“网球”字符串来自Sport模型,“网球-2018”字符串来自Se​​ason模型。

class Sport(models.Model):
    name = models.CharField(max_length=50)

class Season(models.Model):
    ...
    slug = models.SlugField(...)

第一个网址将显示当前季节(2019年)的网球内容,第二个网址将显示上一个季节的网球内容。

我想使事情变得更好,所以我想使用这些新的url以获得相同的结果: '/ gamedata / tennis-2019' '/ gamedata / tennis-2018'

我设法实现了更改,现在我正在处理旧url的重定向。 第二个网址('/ gamedata / tennis / tennis-2018')没问题:我可以取得本赛季的冠军,然后轻松重定向到/ gamedata / tennis-2019。

问题在于将/ gamedata / tennis重定向到gamedata / tennis-2019。 看看我的网址:

...
url(r'^(?P<season_slug>[^/]+)/$',
    views.SportdataView.as_view(),
    name="sportdataview"),
url(r'^(?P<sport_name>[^/]+)/$',
    views.SportdataRedirectView.as_view(),
    name="redirect-old-sportdata")

由于某种原因(我不理解),Django为这两个URL带来了相同的视图。实际上,如果我颠倒了url的顺序,我总会得到重定向视图。即使是/ gamedata / tennis-2018。

URL正则表达式在做什么?

PS,我设法通过以下方式对重定向网址进行了硬编码:

url(r'^tennis/$',
    views.SportdataRedirectView.as_view(),
    name="redirect-old-sportdata")

我只有4种运动,所以这不是一个大问题,这是一个快速解决方案,但是我想尽可能地了解更好的解决方案。

谢谢, 维托里奥

0 个答案:

没有答案