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

时间:2016-12-20 00:45:49

标签: python bottle

我正在与我的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.")

这样用户就必须输入一个未采用的用户名。

(我不需要验证密码。)

有什么方法可以用瓶子做这个吗?

感谢。

1 个答案:

答案 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>