You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 19:40:37