我正在与我的CS课程任务的客户,物品和订单进行“购物”。
我正在构建它,以便可以通过网络而不是命令行访问它,我正在使用Bottle。
我正在尝试创建一个“创建帐户”页面,但我想要它,以便在用户输入已经使用的用户名时发出警报。
用户名在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.")
这样用户就必须输入一个未采用的用户名。
(我不需要验证密码。)
有什么方法可以用瓶子做这个吗?
感谢。
答案 0 :(得分:0)
我只是做了一些简单的事情,并使用了一个新帐户'页面我把表格放在那里,并在' POST'方法我得到了像
这样的用户名 store.curs.execute("SELECT username FROM customers")
并使用list comprehension将其放入列表中:
validUsernames = [u[0] for u in store.c.fetchall()]
使用request.forms.get
从表单获取信息,然后只使用if语句,如果用户名不在validUsernames中,则将数据插入数据库并将用户带到登录页面。否则,它将转到另一个页面,其中包含用户名'用户可以点击返回主页面。
我可以用一个弹出窗口来缩短这个时间。使用'用户名拍摄'然后在用户点击“好的”后重定向回新的帐户页面,但我不知道该怎么做?
编辑::在else
上(如果使用了用户名)我使用了redirect('newaccount?error=Username Taken')
并使用request.query.error
获取了它,并在出现错误时将其打印在newaccount页面中。< / p>