__name__
只是获取应用定义位置的导入名称的便捷方法。Flask使用导入名称来知道在哪里查找资源,模板,静态文件,实例文件夹等。使用包时,如果在其中定义应用程序,__init__.py
则__name__
仍然会指向相对于资源所在的“正确”位置是。但是,如果您在其他地方定义它(例如)mypackage/app.py
,则using__name__
将告诉Flask寻找相对于mypackage.app
而不是的资源mypackage
。
使用__name__
与“硬编码”不正交,它只是使用包名称的捷径。而且也没有理由说名称 应该 是基本包,这完全取决于您的项目结构。