Python Bottle - 检查用户输入的内容是否在数据库中

Python Bottle - checking if what the user has entered is in a database

我正在为我的 CS class 任务制作一个包含客户、物品和订单的 'shop'。

我正在构建它,以便可以通过网络而不是命令行访问它,我正在使用 Bottle。

我正在尝试创建一个 'Create Account' 页面,但我想要它以便在用户输入已被占用的用户名时发出警报。

用户名在 SQLite3 数据库中。

对于命令行版本:

我使用这个得到了一个被占用的用户名列表:

store.curs.execute("SELECT username FROM customers")
validUsernames = [u[0] for u in store.curs.fetchall()]

然后我有这样的事情:

while True:
    username = str(input("USERNAME: "))
    if username not in validUsernames:
        store.insert_customer_data(firstname,lastname,address,username)
        print("Account created")
    else:
        print("Username taken, try again.")

因此用户必须输入一个未使用的用户名。

(我不需要验证密码的东西。)

有什么方法可以用 Bottle 做到这一点吗?

谢谢。

我只是做了一些简单的事情,在 'newaccount' 页面上我把表单放在那里,在 'POST' 方法的函数中我得到了像

这样的用户名

store.curs.execute("SELECT username FROM customers")

并使用列表理解将其放入列表中:

validUsernames = [u[0] for u in store.c.fetchall()]

使用 request.forms.get 从表单中获取信息,然后仅使用 if 语句,如果用户名在 validUsernames 中为 not,则它会将数据插入数据库并将用户带到登录页面。否则,它会转到带有 'Username taken' 的另一个页面,用户可以单击返回主页。

我可以用 'popup' 和 'Username Taken' 来缩短它,然后在用户点击 'Okay' 后重定向回新帐户页面,但我不知道该怎么做?

EDIT:: 在 else 上(如果用户名被占用)我使用 redirect('newaccount?error=Username Taken') 并使用 request.query.error 获取它并在出现错误时将其打印在新帐户页面中.