使用类型标注加速 Django 模版开发

Python 语言的类型标注由 PEP484(Python 3.5) 引入

主要提供:

  • 类型标注的标准语法

主要目的:

  • 让 Python 代码 对 IDE , 代码/类型 检查工具(lint) 更加友好

代码的类型(静态分析)是对于开发而言很重要,因为它可以提供给 IDE 足够的信息以完成: 自动补全,代码重构 以及 潜在问题检测。

代码自动补全 以及 重构 功能可以加快应用程序的开发,而潜在问题检测则可以让开发者避免常见的问题(减少应用程序中的 bug 数量,因此可以减少后期的维护成本)。

PyCharm Professional

PyCharm Professional 作为 Python 最强大的 IDE 之一,已经内置支持了 Python 的代码标注(PEP484, 同样也支持 pyi 文件)。

备注

甚至在出现 PEP 484 之前,PyCharm Professional 已经使用了他们内部自定义的 Python 类型标注。 参见: python-skeletons

在 PEP 484 之后,PyCharm Professional 已经切换到使用标准的 Python 类型标注库: 参见: typeshed

PyCharm Professional 具有如下的特点:

智能 Python 辅助

PyCharm Professional 提供智能代码补全、代码检查、实时错误高亮显示和快速修复,还有自动化代码重构和丰富的导航功能(跳转到定义、跳转到实现 等等)。

Web 开发框架

PyCharm Professional 为现代 Web 开发框架(如:Django、Flask、Google App Engine、Pyramid和web2py)提供了针对性支持。

科学工具

PyCharm Professional 与 IPython Notebook 集成,提供交互式 Python 控制台, 并且支持 Anaconda 和多种科学化的包(例如 matplotlib 和 NumPy)。

跨技术开发

除了 Python 外,PyCharm Professional 还支持 JavaScript、CoffeeScript、TypeScript、Cython、SQL、HTML/CSS、模板语言、AngularJS、Node.js 等等。

远程开发能力

通过远程解释器、集成的 SSH 终端、Docker 和 Vagrant 集成,在远程主机或虚拟机上运行、调试、测试和部署应用程序。

内建开发者工具

内建提供海量工具集:集成调试器和测试器、Python分析器、 内置终端,以及与主流VCS集成,还有内建的数据库工具。

Django Template

遗憾的是: 虽然 PyCharm Professional 内置了对 Django Web 框架的支持,但是因为模版的动态性, 在 Django 模版文件中 PyCharm Professional 的 自动补全、代码导航 以及 代码重构 几乎无法使用。

备注

因为模版可以动态复用, 而 Django 的 middleware 又可以随意注入变量, 因此想完全推导出模版中变量的类型是不可能的。

因此如果 PyCharm Professional 能够支持 Django 模版变量类型的注释,这些问题便可以迎刃而解。

Typed Django Template

因为 PyCharm Professional 没有内置对 Django 模版类型标注的支持,因为我们需要下载额外的插件以提供此功能。

您可以从这里下载: Typed Django Template

安装完毕之后,我们即可通过标注类型来支持 Django 模版代码的自动补全, 代码导航 和 重构。

此插件对于严重依赖 Django 模版代码库尤其有作用。

自动补全

https://cdn.jsdelivr.net/gh/valbendan/dtpdemo@main/img/code_complete_1.png https://cdn.jsdelivr.net/gh/valbendan/dtpdemo@main/img/code_complete_2.png

查找引用

https://cdn.jsdelivr.net/gh/valbendan/dtpdemo@main/img/find_usage.png

代码检测

https://cdn.jsdelivr.net/gh/valbendan/dtpdemo@main/img/field_not_exists.png