Django框架下,用sqlite3实现登录系统

在Django框架下,自带sqlite3数据库。在21年的比赛中用sqlite3库实现了用户登录注册

一开始我想直接使用 models.[model名].objects.的方法从数据库中获取对应数据在后端进行账号密码匹对
modelsobject

曾经用这个方法返回表单给前端,显示用户数据

但这个方法在后端得到的数据是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:
# 密码错误