【发布时间】:2013-04-13 13:11:30
【问题描述】:
我正在阅读 django 开发文档。 Here 表示不再推荐使用永久链接装饰器,请在 get_absolute_url 方法中使用 reverse 生成模型实例的完整 url(向上滚动一点并查看警告框)。
我认为每次需要时都必须使用 reverse 是违反 DRY 的。那么使用永久链接有什么问题呢?为什么不再推荐?
【问题讨论】:
标签: django django-models decorator permalinks
我正在阅读 django 开发文档。 Here 表示不再推荐使用永久链接装饰器,请在 get_absolute_url 方法中使用 reverse 生成模型实例的完整 url(向上滚动一点并查看警告框)。
我认为每次需要时都必须使用 reverse 是违反 DRY 的。那么使用永久链接有什么问题呢?为什么不再推荐?
【问题讨论】:
标签: django django-models decorator permalinks
在当前版本的 django 中,装饰器实际上调用了文档推荐的 reverse 函数。原因似乎是现在我们有了reverse(),就不需要装饰器了。使用reverse 看起来确实比返回名称、元组和字典更好。相反,您使用 args 和 kwargs - 惯用的 python。
还有this is the ticket 讨论了为了 API 纯度而弃用装饰器。他们没有发出警告并让用户更新代码库,而是决定在文档中简单地放置警告。
永久链接装饰器应该被弃用并最终被移除。 引入它是为了解决必须将 url 硬编码到 get_absolute_url 中的问题。然而,它违反了优秀装饰器的主要规则之一,即强制函数签名更改以处理它已被装饰的事实。此外,与直接在 get_absolute_url 的主体中使用 reverse() 相比,它没有提供任何有用的功能。
【讨论】: