Repolode
pylint-dev

pylint-dev/pylint-django

Pylint 插件,让静态检查理解 Django 的模型、表单、视图和迁移,减少 Django 代码中的误报。

Star
623
Fork
124
未关闭 Issue
76
最近提交
4天前

这是什么?

pylint-django 是 Python 静态分析工具 Pylint 的一个插件。Pylint 本身不理解 Django 的运行时机制,会对 Model.objects、Views.request 这类属性误报警告,也无法解析部分 ForeignKey 字段。该插件加入了 Django 相关的推断,消除这些误报,并让模型和表单字段的属性类型可被正确识别。

使用时通过 Pylint 的 --load-plugins 参数加载插件。为获得准确结果,需要提供 Django 配置模块,可以通过环境变量 DJANGO_SETTINGS_MODULE 或命令行参数 --django-settings-module 指定,以便解析已安装应用和字符串形式引用的模型。未配置时会使用默认设置,推断精度会下降。插件也随 Prospector 一起安装,检测到 Django 时自动启用。

插件还提供一个可选的迁移检查器,用于标记新增且带默认值的字段(在大表上可能影响性能),以及没有反向回调的 RunPython 操作。该检查器默认关闭,需要显式启用。

核心功能

  • 01抑制 Model.objects、Views.request 等 Django 动态生成属性的误报。
  • 02正确解析 ForeignKey 属性,避免“has no member”类错误。
  • 03推断 Model 和 Form 字段属性的类型。
  • 04校验 Model.__unicode__ 方法,并标记 ModelForm 中危险的 exclude 用法。
  • 05可选地检查迁移文件中有风险的字段默认值和不可逆的 RunPython 操作。

适用场景

  • 在 CI 中对 Django 项目运行 Pylint 或 Prospector,避免大量误报干扰结果。
  • 提升大型 Django 代码库中模型和表单的静态分析准确性。
  • 在部署前检查迁移文件的性能隐患或可逆性问题。

快速上手

  1. 1

    从 PyPI 安装插件

    pip install pylint-django
  2. 2

    加载插件并指定 Django 设置模块后运行 pylint

    pylint --load-plugins pylint_django --django-settings-module=your.app.settings [..other options..] <path_to_your_sources>

使用前须知

  • 采用 GPL-2.0 许可证,这是一种 copyleft 许可证,可能限制部分商业用途。
  • 默认不会安装 Django,需要自行配置环境,或使用 with-django 额外依赖安装。
  • 最好配置 Django 设置模块;未配置时分析结果准确度会降低。

标签

常见问题

pylint-django 是什么?
Pylint 插件,让静态检查理解 Django 的模型、表单、视图和迁移,减少 Django 代码中的误报。 pylint-django 是 Python 静态分析工具 Pylint 的一个插件。Pylint 本身不理解 Django 的运行时机制,会对 Model.objects、Views.request 这类属性误报警告,也无法解析部分 ForeignKey 字段。该插件加入了 Django 相关的推断,消除这些误报,并让模型和表单字段的属性类型可被正确识别。
pylint-django 可以免费使用吗?用的什么许可证?
pylint-django 以 GPL-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
pylint-django 还在维护吗?
活跃维护中。pylint-django 最近一次提交是在 2026年11月3日。
pylint-django 适合用来做什么?
在 CI 中对 Django 项目运行 Pylint 或 Prospector,避免大量误报干扰结果。 提升大型 Django 代码库中模型和表单的静态分析准确性。 在部署前检查迁移文件的性能隐患或可逆性问题。
pylint-django 怎么安装和运行?
从 PyPI 安装插件: pip install pylint-django 加载插件并指定 Django 设置模块后运行 pylint: pylint --load-plugins pylint_django --django-settings-module=your.app.settings [..other options..] <path_to_your_sources>
在哪里获取 pylint-django?
源代码和安装说明在 GitHub 上:https://github.com/pylint-dev/pylint-django

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目