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

使用Streamlit搭建业务仪表盘的两项功能可行性咨询及参考需求

你的Streamlit仪表盘需求解决方案

1. 主账号登录访问功能

完全可行,有两种常用实现方式:

  • 简单密码验证(适合小型单用户场景):利用Streamlit的st.session_state管理登录状态,在应用开头添加登录表单,验证通过后才展示仪表盘内容。示例代码:
import streamlit as st

def dashboard():
    st.title("业务仪表盘")
    # 仪表盘核心内容区域

if "logged_in" not in st.session_state:
    st.session_state.logged_in = False

if not st.session_state.logged_in:
    username = st.text_input("用户名")
    password = st.text_input("密码", type="password")
    if st.button("登录"):
        # 建议用环境变量存储账号密码,避免硬编码
        if username == "admin" and password == "your_secure_password":
            st.session_state.logged_in = True
            st.rerun()
        else:
            st.error("用户名或密码错误")
else:
    dashboard()
  • 专业认证组件(适合多用户场景):使用streamlit-authenticator第三方组件,支持用户注册、登录会话管理、权限控制等功能,安装后通过配置用户信息即可快速实现标准化认证流程。

2. Google Sheets数据读写与更新

完全支持,核心依赖gspread库配合Google Sheets API实现,步骤如下:

  1. 在Google Cloud平台创建项目,启用Google Sheets API和Google Drive API
  2. 创建服务账号,生成JSON格式的密钥文件
  3. 将服务账号邮箱添加为目标Google Sheets的编辑者,完成权限授权
  4. 通过gspread实现各类数据操作,示例代码:
import gspread
from google.oauth2.service_account import Credentials
import streamlit as st

# 初始化授权
SCOPE = ["https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/drive"]
CREDS = Credentials.from_service_account_file("service_account_key.json", scopes=SCOPE)
CLIENT = gspread.authorize(CREDS)

# 打开目标表格
SHEET = CLIENT.open("业务数据表格").sheet1

# 读取全量数据
st.subheader("当前业务数据")
data = SHEET.get_all_records()
st.dataframe(data)

# 新增行操作
new_row_content = st.text_input("输入新增行内容(用逗号分隔各字段)")
if st.button("添加行") and new_row_content:
    SHEET.append_row(new_row_content.split(","))
    st.success("行添加成功")
    st.rerun()

# 编辑现有数据
row_num = st.number_input("输入要编辑的行号(从2开始)", min_value=2)
col_num = st.number_input("输入要编辑的列号(从1开始)", min_value=1)
new_value = st.text_input("输入新值")
if st.button("更新数据"):
    SHEET.update_cell(row_num, col_num, new_value)
    st.success("数据更新成功")
    st.rerun()

# 新增列操作
new_col_content = st.text_input("输入新增列的内容(用逗号分隔各行值)")
col_index = st.number_input("输入要插入的列位置", min_value=1)
if st.button("添加列") and new_col_content:
    SHEET.insert_col(values=new_col_content.split(","), index=col_index)
    st.success("列添加成功")
    st.rerun()

参考方向

  • Streamlit官方文档中关于session_state状态管理的章节
  • gspread官方文档中的API使用说明
  • streamlit-authenticator的官方使用指南

内容的提问来源于stack exchange,提问作者Varun G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:50:50