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
获取它并在出现错误时将其打印在新帐户页面中.
我正在为我的 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
获取它并在出现错误时将其打印在新帐户页面中.