python的django模块_Python django-stubs包_程序模块 - PyPI - Python中文网

Django框架的PEP484存根

这个包包含类型stubs和mypy插件,为django框架提供更精确的静态类型和类型推断。django使用了一些python“魔术”,这使得一些代码模式的精确类型成为问题。这就是为什么我们需要在stub中附带mypy插件。最后一个目标是能够获得最常见模式的精确类型。

支持Python3.6/3.7和Django 2.1/2.2。

可以在django的早期版本上运行,但预计会出现一些缺少导入警告的情况。

安装pip install django-stubs

警告:1.0.0之前版本的所有配置都将被删除,请使用下面的配置。

警告:1.0.0中断dmypy,如果需要,请继续使用0.12.x系列。

要让mypy知道这个插件,您需要添加[mypy]

plugins =

mypy_django_plugin.main

在你的mypy.ini文件中。

插件要求在mypy.ini文件中指定django设置模块(放入DJANGO_SETTINGS_MODULE变量中的内容)。[mypy]

strict_optional = True

; this one is new

[mypy.plugins.django-stubs]

django_settings_module = mysettings

其中mysettings是DJANGO_SETTINGS_MODULE的值(带或不带引号)

你对mypy/django插件找不到你的设置模块有问题吗?尝试将项目的根路径添加到pythonpath环境变量中。如果使用pipenv,可以将以下内容添加到项目根目录中的.env文件中,pipenv将在执行任何命令之前自动运行该文件。PYTHONPATH=${PYTHONPATH}:${PWD}

新的实现使用django运行时来提取模型信息,因此如果安装的应用程序models.py不正确,它将崩溃。出于同样的原因,您不能在将为django.setup()执行的任何python文件的全局范围内使用reveal_type。

换句话说,如果您的manage.py runserver崩溃,mypy也将崩溃。

注释

实现monkey补丁django将__class_getitem__添加到Manager类。如果您使用python3.7并在您的代码中也这样做,那么您可以做如下事情class MyUserManager(models.Manager['MyUser']):

pass

class MyUser(models.Model):

objects = UserManager()

工作,这会使错误消息更好一点。

否则,将在mypy中创建名为MyUser__MyUserManager的自定义类型,它将重写基管理器为models.Manager[User],以使get_queryset()等方法返回正确类型的QuerySet。

获取帮助

如果你认为你有更一般的打字问题,请参考https://github.com/python/mypy和他们的gitter。

欢迎加入QQ群-->: 979659372

推荐PyPI第三方库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值