ToUI with SQL User Database#
ToUI can be easily used with SQL database for:
User authentication
Storing user data in database
This example uses the HTML file “test8.html”:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Sign in users:</h1>
<input id="username"/>
<input id="password"/>
<button id="sign-in">Sign in</button>
<button id="sign-up">Sign up</button>
<p id="output"></p>
</body>
</html>
Python code:
import os
from toui import Website, Page
app = Website(__name__, assets_folder="assets", secret_key="some text")
SQL_URI = f"sqlite:///{os.getcwd()}/.test.db" # Change this value to match your SQL database URI
app.add_user_database_using_sql(SQL_URI, other_columns=["age"]) # Connects to sql database.
main_pg = Page(html_file="assets/test8.html", url="/")
def sign_in():
pg = app.get_user_page()
username = pg.get_element("username").get_value()
password = pg.get_element("password").get_value()
pg.get_element("output").set_content("loading")
success = app.signin_user(username=username, password=password)
if success:
age = app.get_current_user_data("age")
pg.get_element("output").set_content(f"Signed in successfully. Age of user: {age}")
else:
pg.get_element("output").set_content("Sign in failed")
def sign_up():
pg = app.get_user_page()
username = pg.get_element("username").get_value()
password = pg.get_element("password").get_value()
pg.get_element("output").set_content("loading")
success = app.signup_user(username=username, password=password)
if success:
app.signin_user(username=username, password=password)
value_added = app.set_current_user_data("age", 20)
pg.get_element("output").set_content(f"Signed up successfully. Age added: {value_added}")
else:
pg.get_element("output").set_content("Sign up failed")
def set_age():
pg = app.get_user_page()
age = pg.get_element("age").get_value()
app.set_current_user_data("age", age)
pg.get_element("age-output").set_content(f"Age set to {age}")
def get_age():
pg = app.get_user_page()
age = app.get_current_user_data("age")
pg.get_element("age-output").set_content(f"Age is {age}")
main_pg.get_element("sign-in").onclick(sign_in)
main_pg.get_element("sign-up").onclick(sign_up)
main_pg.get_element("set-age").onclick(set_age)
main_pg.get_element("get-age").onclick(get_age)
app.add_pages(main_pg)
if __name__ == '__main__':
app.run()