为什么django中不再推荐永久链接装饰器?

时间:2013-04-20 04:21:15

标签: django django-models decorator permalinks

我正在阅读django dev文档。 Here它表示不再推荐永久链接装饰器,在get_absolute_url方法中使用反向为模型实例生成完整网址(滚动一点并检查警告框)。

我认为违反DRY我们必须在每次需要时使用反向。那么使用固定链接有什么问题?为什么不再推荐它?

1 个答案:

答案 0 :(得分:10)

在当前版本的django中,装饰器逐字地调用文档建议的reverse函数。原因似乎是因为我们有reverse(),装饰器是不必要的。使用reverse确实看起来比返回名称,元组和字典更好。相反,你使用args和kwargs - 惯用的python。

this is the ticket讨论过为了API纯度而弃用装饰器。他们决定只在文档中发出警告,而不是提出警告并让用户更新代码库。

  

永久链接装饰器应该被弃用并最终删除。   它被引入来解决必须将URL硬编码到get_absolute_url的问题。然而,它违反了良好装饰者的主要规则之一,因为强制功能签名改变以便处理它被装饰的事实。此外,它没有提供任何有用的功能,而是直接在get_absolute_url的主体内使用reverse()。