简介:登录小案例
寄语:本篇文章目的在于简单的使用Django框架,提供一些登录的思考方式,不在于直接拿去运行,其中主要是veiws文件中的login函数,是重点:登录的逻辑,数据库中怎么取出数据。同时并没有加入网络,很是不足,只适合自己玩,目前能力有限希望海涵。
页面:两个简单的html页面,分别是login页面和main页面。login页面主要是一个表单,main页面一句话,显示某个用户登录成功
功能:从数据库获得用户的username,password,与用户输入的对比:
(1)判断数据中是否存在该用户;
(2)判断密码是否正确;
(3)账户密码正确,跳转页面
大体模样:
详细设计(主要代码):
login页面:
<body>
<form action="/app01/login/" method="post">
{% csrf_token %} {# 注意没有回报错 #}
<p>
用户: <input type="text" name="username">
</p>
<p>
密码: <input type="text" name="password">
</p>
<p>
<input type="submit" value="登录">
</p>
</form>
<span>{{ err_str }}</span>
</body>
main页面:
<body>
恭喜{{ username }} <br>{#显示登录人的名字#}
登录成功
</body>
views文件:
from django.shortcuts import render,HttpResponse,redirect
from app01 import models
# Create your views here.
def login(request):
# 错误提示语句
err_str=''
# 判断,如果是post请求,并且账户密码都对,返回nice
if request.method=='POST':
# 获取到用户输入的用户名密码
user=request.POST.get('username')
pwd=request.POST.get('password')
# print(user,pwd)
#获取数据库中所有的对象
obj_list=models.User_login.objects.all()
# 创建一个字典
dic={}
# 将对象的name 和password 封装成一个键值对,存到字典
for i in obj_list:
dic[i.name]=i.password
# 判断用户是否存在,不存在返回 “用户不存在”
if user not in dic:
err_str='用户不存在'
return render(request,'app01/login.html',{'err_str':err_str})
# 如果存在,判断密码是否相等,不等返回 “密码错误”
elif pwd != dic[user]:
err_str = '密码错误'
return render(request, 'app01/login.html', {'err_str': err_str})
# 密码账户都通过,返回 “OK”
else:
return render(request,'app01/main.html',{'username':user})#####################
# return redirect('/app01/main/')
print(request.method)
return render(request,'app01/login.html')
models文件:
from django.db import models
# Create your models here.
'''
主要目的生成数据表,表中包含id,name,password三个字段
'''
class User_login(models.Model):
id=models.AutoField(primary_key=True)#id字段,主键自动增长
name=models.CharField(null=False,max_length=20)#name字段,不能为空,字长20
password=models.CharField(null=False,max_length=11)#password字段,不能为空,长度11
执行命令:
添加数据:
我们从命令提示符中查看:
app下的urls文件:
根下的urls文件:
主要的东西就是这写了,还有就是一些templates简单配置,和一些很简单的配置,不在写出了。
结果图:
地址栏:
login网页:
登录失败:
(1)用户不存在
(2)密码错误
main网页:
成功: