Недавно я пытался разработать простое веб-приложение, используя Streamlit
. Я могу создать его легко и быстро, но у меня возникает проблема, когда я хочу создать страницу аутентификации или входа в систему, когда я пытаюсь развернуть ее в Heroku
(бесплатный dyno). Сначала я думал, что это был успех, пока не понял, что веб-приложение продолжает перебирать все коды после взаимодействия с приложением. Затем я попытался применить subprocess
, но я думаю, что из-за политики Heroku я не могу породить другого динамо.
Что я могу сделать, чтобы решить эту проблему?
Это то, что я сделал до сих пор:
import streamlit as st
import subprocess
def id_authenticated(username):
return username == "******"
def pw_authenticated(password):
return password == "*****"
def generate_login_block():
block1 = st.empty()
block2 = st.empty()
block3 = st.empty()
block4 = st.empty()
return block1, block2, block3, block4
def clean_blocks(blocks):
for block in blocks:
block.empty()
def login(blocks):
blocks[0].markdown("""
<style>
input {
-webkit-text-security: none;
}
</style>
""", unsafe_allow_html=True)
blocks[0].markdown("""
<style>
input {
-webkit-text-security: none;
}
</style>
""", unsafe_allow_html=True)
return blocks[1].text_input("Username:"), blocks[3].text_input('Password:', value = "", type = "password")
login_blocks = generate_login_block()
username, password = login(login_blocks)
login_button = st.button("Log In")
if login_button & id_authenticated(username) & pw_authenticated(password):
st.success("You are logged in")
subprocess.Popen(["streamlit", "run", "app.py"])
elif login_button:
st.error("Please input valid username and/or password")