使用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实现,步骤如下:
- 在Google Cloud平台创建项目,启用Google Sheets API和Google Drive API
- 创建服务账号,生成JSON格式的密钥文件
- 将服务账号邮箱添加为目标Google Sheets的编辑者,完成权限授权
- 通过
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
相关产品推荐
相关产品推荐

