5

我正在阅读 django 开发文档。这里它说不再推荐使用永久链接装饰器,在你的get_absolute_url方法中使用 reverse 为模型实例生成完整的 url(向上滚动一点并查看警告框)。

我认为每次需要时都必须使用 reverse 是违反 DRY 的。那么使用永久链接有什么问题呢?为什么不再推荐?

4

1 回答 1

11

在当前版本的 django 中,装饰器按字面意思调用reverse文档推荐的函数。原因似乎是现在我们已经不需要装饰器了reverse()。Usingreverse看起来确实比返回名称、元组和字典更好。相反,您使用 args 和 kwargs - 惯用的 python。

这是讨论为了 API 纯度而弃用装饰器的票。他们没有提出警告并让用户更新代码库,而是决定在文档中简单地放置警告。

永久链接装饰器应该被弃用并最终被删除。引入它是为了解决必须将 url 硬编码到 get_absolute_url 中的问题。然而,它违反了优秀装饰器的主要规则之一,即强制函数签名更改以处理它已被装饰的事实。此外,与直接在 get_absolute_url 的主体中使用 reverse() 相比,它没有提供任何有用的功能。

于 2013-04-20T04:35:32.783 回答