Django集成Firestore可靠性及连接报错问题咨询
问题1:该场景下使用Django是否可靠?
- 完全可靠。Django作为成熟的后端框架,适配你的需求毫无问题:
- 自带的认证系统可与Firebase Auth配合,实现用户身份校验、权限管控;
- 丰富的第三方生态能快速集成Firebase工具,轻松处理Firestore的数据读写;
- 模块化架构便于后续扩展功能,比如新增数据统计、批量操作等管理模块;
- 生产环境下的稳定性与安全性经过大量验证,适合作为Web管理后台的基础框架。
问题2:解决
google.auth.exceptions.DefaultCredentialsError错误 这个错误是因为Firestore Python SDK无法自动获取认证凭据,按以下步骤解决:
步骤1:获取Firebase服务账号密钥
- 登录Firebase控制台进入你的项目
- 依次点击「设置」→「项目设置」→「服务账号」
- 点击「生成新的私钥」,下载JSON格式的密钥文件
步骤2:配置认证凭据
有两种配置方式可选:
方式一:设置环境变量
启动Django前,设置环境变量指向密钥文件路径:
# Linux/macOS终端 export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json" # Windows命令行 set GOOGLE_APPLICATION_CREDENTIALS=C:\path\to\your\service-account-file.json
方式二:代码中显式传入凭据
修改Firestore初始化代码,直接指定密钥文件:
import firebase_admin from firebase_admin import credentials, firestore # 初始化firebase_admin cred = credentials.Certificate("/path/to/your/service-account-file.json") firebase_admin.initialize_app(cred) db = firestore.client() # 原有pyrebase配置保持不变 config={ "apiKey": "******************", "authDomain": "*******.firebaseapp.com", "projectId": "*******", "storageBucket": "*******.appspot.com", "messagingSenderId": "*******", "appId": "******************", "databaseURL": "https://***********.firebaseio.com", } firebase = pyrebase.initialize_app(config) auth = firebase.auth() database = firebase.database() def index(request): # 修正stream()用法:单个文档用get()获取,通过to_dict()提取字段 doc = db.collection('test').document('test1').get() if doc.exists: weight = doc.to_dict()['weight'] else: weight = None # 处理文档不存在的情况 return render(request, 'index.html', { "weight": weight, })
注意:原代码中stream()用法错误,它用于获取多个文档的迭代器,单个文档需用get()方法,再通过to_dict()获取字段值。
内容的提问来源于stack exchange,提问作者taha khamis
相关产品推荐
相关产品推荐

