在Django框架下,自带sqlite3数据库。在21年的比赛中用sqlite3库实现了用户登录注册
一开始我想直接使用 models.[model名].objects.的方法从数据库中获取对应数据在后端进行账号密码匹对

曾经用这个方法返回表单给前端,显示用户数据
但这个方法在后端得到的数据是NULL
所以使用了sqlite3在Python的库
获取用户信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| import sqlite3
con = sqlite3.connect('db.sqlite3') cur = con.cursor() sql = 'select * from [数据库名:在DB Changes中看]' try: cur.execute(sql) # 获取所有数据 person_all = cur.fetchall() # print(person_all) # 遍历 for p in person_all: # 创建一组组新的用户信息字典 放入peopleInfo 用户名:密码 peopleInfo = {p[1]: p[3]} # 创建用户名:邮箱 peopleEmail = {p[1]: p[2]} # 将每个字典更新到nameAndPasswd 做成所有用户信息合集 nameAndPasswd.update(peopleInfo) nameAndEmail.update(peopleEmail) # print(p) except Exception as e: print(e) print('查询失败') finally: # 关闭游标 cur.close() # 关闭连接 con.close()
|
因为我建立的数据库是(pk,用户名,邮箱,密码),用for循环遍历每一组
将每一组的p[1]——用户名,p[3]——密码组成一个新的字典再更新到信息合集nameAndPasswd中,当for遍历完的时候,nameAndPasswd中就会有所有用户的账号密码键值对了
登录
使用了字典的内置方法 dict.get(key,default=None)返回指定键的值,用此方法获得的数据库指定账号的密码,拿来和输入的密码做比较
1 2 3 4 5 6 7 8 9
| # 获得页面填写的账号信息 nameSignIN = request.POST.get('accountSignIn') passwordSignIN = request.POST.get('passwordSignIn')
if nameAndPasswd.get(nameSignIN) == passwordSignIN: return render(request, '???.html') # 密码正确 else: # 密码错误
|