streamlit管理员登陆和普通用户登录看到的东西不一致python代码怎么实现
时间: 2024-02-07 10:04:08 浏览: 29
可以根据用户类型的不同,动态地展示不同的内容。一种简单的实现方式是使用条件语句。具体来说,你可以在用户登录时记录用户的类型,然后在展示页面时,根据用户类型来选择展示哪些内容。
以下是一个示例代码:
```python
import streamlit as st
# 模拟两个用户类型:管理员和普通用户
USERS = {
'admin': {'name': 'Admin', 'type': 'admin'},
'user': {'name': 'User', 'type': 'user'}
}
# 获取当前用户信息
def get_user():
username = st.session_state.get('username', None)
if username:
return USERS.get(username)
# 登录页面
def login():
st.subheader('Login')
username = st.text_input('Username')
password = st.text_input('Password', type='password')
if st.button('Login'):
user = USERS.get(username)
if user and password == '123':
st.session_state.username = username
st.success('Logged in successfully.')
else:
st.error('Invalid username or password.')
st.write('---')
# 管理员页面
def admin_page():
st.subheader('Admin Page')
st.write('Welcome, Admin!')
# 展示管理员独有的内容
# 普通用户页面
def user_page():
st.subheader('User Page')
st.write('Welcome, User!')
# 展示普通用户独有的内容
# 主页面
def main():
user = get_user()
if user:
if user['type'] == 'admin':
admin_page()
else:
user_page()
else:
login()
if __name__ == '__main__':
main()
```
在上面的代码中,我们定义了两个用户类型:`admin` 和 `user`。在登录时,如果用户名和密码验证通过,我们记录了当前用户的用户名。在主页面中,我们根据当前用户的类型来展示不同的内容,如果用户没有登录,则展示登录页面。
这样,当管理员登录时,会看到管理员页面,而普通用户登录时,会看到普通用户页面,两者看到的内容是不一样的。