with placeholder.form(“login”):
st.markdown(“#### Enter your credentials”)
email = st.text_input(“Email”)
password = st.text_input(“Password”, type=“password”)
submit = st.form_submit_button(“Login”)
if submit and email == actual_email and password == actual_password:
# If the form is submitted and the email and password are correct,
# clear the form/container and display a success message
placeholder.empty()
st.success(“Login successful”)
elif submit and email != actual_email and password != actual_password:
st.error(“Login failed”)
else:
pass
while trying above code I am getting error “‘setIn’ cannot be called on an ElementNode”
What to do in this case? I have referred this in community it says that it is fixed but still I am getting the error.
Hi @manoj_kumar, you can try out the following code:
import streamlit as st
placeholder = st.empty()
actual_email = "email"
actual_password = "password"
with st.form("login"):
st.markdown("#### Enter your credentials")
email = st.text_input("Email")
password = st.text_input("Password", type="password")
submit = st.form_submit_button("Login")
if submit:
if email == actual_email and password == actual_password:
placeholder.success("Login successful")
# do anything else you want to do hereafter
elif email != actual_email or password != actual_password:
placeholder.error("Login failed")
# redirect to anywhere you want to hereafter
The problem you faced was due to:
a. You used placeholder for containing the form; and you empty the same placeholder from within the same form.
Enhancements:
b. you can pass ‘success’ through this placeholder - refer above code.