我发现Flask的自动完成功能有所欠缺-这是因为在内部,特定于上下文的对象(例如current_app
,request
和logger
实际上是{{1} } s。因此,PyCharm根本不知道如何处理这种类型。
因此,对我来说,显而易见的解决方案是在导入的模块上应用类型提示。除非你做不到!从Python 3.7开始,似乎没有这种语法可以简化此操作。
因此,下一个显而易见的解决方案是为每个特定于上下文的模块制作本地副本,其类型应明确设置为:
LocalProxy
...在您真正尝试启动服务器之前一直有效,在这种情况下,应用程序由于from logging import Logger
from flask import Flask, Request, Blueprint, request, current_app as app
app: Flask = app
logger: Logger = app.logger
request: Request = request
而崩溃
事实证明,我们实际上可以将相关的类型提示封装在类内部或应用程序上下文中的其他范围内。
RuntimeError: Working outside of application context.
...有效,但在每种可以想象的意义上都令人尴尬。
在Flask的应用程序上下文中是否有合理的解决方案来获取正确的类型提示?
答案 0 :(得分:0)
你试过了吗?我知道它至少在从其他模块导入普通变量时有效。
# in module_a.py
my_str = 23
# in module_b.py
from module_a import my_str
my_str: str
# The IDE should now suggest string methods when trying to access
# properties of `my_str`