API 的稳定性

Django 致力于 API 的稳定性和向前兼容性。简而言之,这意味着你在一个 Django 版本开发的代码可以继续在未来的版本中使用。在升级你的项目使用的 Django 版本时,你可能需要做一些小的更改: 了解你要升级的一个或多个版本请参阅 release note 中的“向后不兼容更改”部分。

在将 API 的稳定性作为一个非常重要的优先级的同时,Django 还致力于持续的改进,并致力于在我们提供的 API 中实现“一种方法”(最终)。这意味着,当我们发现明显更好的实现方式时,我们会弃用旧的方式,并最终将其移除。我们的目标是提供一个现代的、可靠的、高质量的 web 框架,帮助所有使用它的项目的使用最佳实践。通过使用渐进式的改进,我们试图避免停滞和大规模破坏性升级。

什么是“稳定性”?

在此处,稳定意味着:

  • 所有发布的 API (在文档中的一切 API )在不提供向后兼容的别名的情况下,都不会被移除或者重命名。

  • 如果文档中的 API 添加了新特性(这是极有可能的),新特性不会导致现有方法罢工或者修改方法的含义。也就是说,“稳定性”并不意味着“不变性”。

  • 假如因为某些原因,一个“稳定的” API 必须被移除或者被代替,它将会被弃用但仍然会被保留直到至少有两个新特性发布。当调用即将被弃用的方法时,会产生警告。

    有关 Django 是如何编写版本号以及一些功能是如何被弃用的详细信息,请看: Official releases

  • 如果一个 bug 或安全漏洞完全不可避免,我们才会直接打破这些 API 的向后兼容性而不走弃用过程。


稳定的 API

一般来说,文档中的一切都确定是稳定的,除开 internals area


例外

这种稳定性和向后兼容性承诺有一些例外。

安全修复

如果我们发现了安全问题 --希望报告者遵照我们的 安全报告政策--我们会尽一切努力解决它。 这可能意味着打破向后兼容性; 安全性优先于兼容性保证。


标记为内部的 API

某些API在几种方式中被明确标记为 "内部" :

  • 一些文档提及了这些 API 并标为“内部”,如果确实如此,我们保留修改它的权利。
  • 一些函数,方法以及其他对象以下划线“_”开头,这是 Python 声明其为“私有”的标准方式,如果一个方法以单下划线“_”开头,那么这意味着它是 Django 内部的一个 API。