Login form using St.form

I have created a login form using st.form. it takes userid and password as input. Once those are validated then i call my main pp.py. but problem i am facing is , mail app rendering below login form it is not clearing the login form.

Please help how to achieve this…

Thanks

Hi @manoj_kumar :wave:

You can create a single-element container with st.empty(), insert a form element on the returned container, and clear the form/container using .empty() once the submit button is pressed and the credentials are validated.

Here’s a toy example:

import streamlit as st

# Create an empty container
placeholder = st.empty()

actual_email = "email"
actual_password = "password"

# Insert a form in the container
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

clear-form

Best, :balloon:
Snehan

1 Like

Thanks for sharing the solution…i will try

1 Like

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.