我以前有2个特定的URL,其内容如下: '/ gamedata /网球/' '/ gamedata / tennis / tennis-2018'
“网球”字符串来自Sport模型,“网球-2018”字符串来自Season模型。
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种运动,所以这不是一个大问题,这是一个快速解决方案,但是我想尽可能地了解更好的解决方案。
谢谢, 维托里奥