这是我自己用的django框架下的代码,用于登录注册。
以及将django自带admin系统的权限管理移植(还在尝试)
1. View.py(def RegisterPage,def LoginPage)
def RegisterPage(request):
if request.method == "GET":
return render(request, 'register.html')
if request.method == "POST":
username = request.POST.get("name")
password = request.POST.get("password")
gender = request.POST.get("sex")
# 连接数据库 方便下面使用游标语句
conn = MySQLdb.connect(host="127.0.0.1", user="test", passwd="123456", db="test", charset='utf8', cursorclass=MySQLdb.cursors.DictCursor)
cursor = conn.cursor()
if username: # 确保用户名不为空
selectname = cursor.execute("select Username from Userinfo where Username='" + username + "' ")
conn.commit()
# 在数据库中查找是否有和用户输入一样的名字
if selectname: # 如果这个名字在数据库中
return render(request, 'register.html', {
'message': 'This name has been registered'})
else: # 名字不在数据库
if password: # (名字不在数据库的情况下)密码是否为空
cursor.execute("INSERT INTO Userinfo(Username, Password, Gender)" "value(%s,%s,%s)", [username, password, gender])
conn.commit()
# 修改session的值
request.session['is_registed'] = 'true'
request.session['username'] = username
return render(request, 'login.html', {
'message': 'Successful registed!'})
else: # 密码为空
return render(request, 'register.html', {
'message': 'Password can not be empty!'})
else: # 名字为空
return render(request, 'register.html', {
'message': 'Please input username'})
return render(request, '404.html') # 没有连接前端表单,直接报错
def LoginPage(request):
if request.method == "GET":
return render(request, 'login.html')
if request.method == "POST":
loginname = request.POST.get("name")
loginpassword = request.POST.get("password")
conn = MySQLdb.connect(host="127.0.0.1", user="test", passwd="123456", db="test", charset='utf8', cursorclass=MySQLdb.cursors.DictCursor)
cursor = conn.cursor()
checkname = cursor.execute("select Username from Userinfo where Username='" + loginname + "' ")
print(checkname) # 这里并不是显示具体数据,而是用0 1来表示是否找到对应的数据
conn.commit()
if checkname == 1: # 如果名字能找到
cursor.execute("select Password from Userinfo where Username='" + loginname + "' ")
checkpassword = cursor.fetchone()
conn.commit()
#如果在这里print(checkpassword)则会得到字典形式的密码,如{"Password":123456}
if checkpassword['Password'] == loginpassword: # 如果密码相等
request.session['is_login'] = 'true'
request.session['loginname'] = loginname
#定义session失效时间
request.session.set_expiry(86400)
return render(request, 'default.html', {
'message': 'yes!'}) #打開主頁
else: # 如果密码不相等,则错误
return render(request, 'login.html', {
'message': 'Password error!'}