django的mvt模式大概有什么作用,templates用来写前端html页面,views视图函数用来编写业务逻辑,是前后端交互的中间层,前端获取用户输入的数据,通过views视图函数保存到models数据库里面去,前端需要展示的页面数据也是通过views函数来获取到数据库里面的数据然后传递到前端的模板里面去, models模型主要用来设计数据表,对表数据进行增删改查的操作。
开发登录接口大致分为3个步骤:
第一步编写html模板:
<!DOCTYPE html>
<html lang="en">
<head>
<title>登陆页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<form action="" method="post">
<table align="center">
<tr>
<td>用户名</td>
<td>
<input type="text" name="username" />
</td>
</tr>
<tr>
<td>密码</td>
<td>
<input type="text" name="password"/>
</td>
<tr>
<td>
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
</body>
</html>
打开如图:
第二步创建数据库表:
如图定义好模型:
settings文件里配置数据库信息:
打开cmd执行迁移命令,生成数据库表
Python manage.py makemigrations
Python manage.py migrate
如图:
生成成功如图:
里面数据是我自己添加的
第三步编写views视图函数:
如下:
大意是从前端页面获取到数据分别存储到username,password这2个变量里面,再从数据库里面读取数据,进行对比,2端数据一样则返回成功,不一样则返回用户名或密码错误。
def studentlogin(request): if request.method == "GET": return render(request,"student_login.html") if request.method == "POST": username = request.POST.get("username") password = request.POST.get("password") print("用户名:{},密码:{}".format(username,password)) # TODO 获取到对象,从数据库里取值 res = StundentInfo.objects.get(id=1) if res.username == username and res.password == password: print("数据库用户名:{},密码:{}".format(res.username,res.password)) result = {"code": 0, "msg": "success!", "data": {"username": username, "password": password, } } return JsonResponse(result) else: return HttpResponse("用户名或密码错误")
从数据库里面取值:
res = StundentInfo.objects.get(id=1),会返回一个对象,通过对象拿到里面的username和password的值:
添加url映射:
启动服务:python manage.py runserver 0.0.0.0:8000
fiddler抓包如下:
判断输入非空数据和保存数据:
def studentlogin(request): if request.method == "GET": return render(request, "student_login.html") if request.method == "POST": username = request.POST.get("username") password = request.POST.get("password") print("用户名:{},密码:{}".format(username, password)) # TODO 获取到对象,从数据库里取值 res = StundentInfo.objects.get(id=1) if res.username == username and res.password == password: print("数据库用户名:{},密码:{}".format(res.username, res.password)) result = {"code": 0, "msg": "success!", "data": {"username": username, "password": password, } } return JsonResponse(result) elif username.strip() != '' and password.strip() != '': info = StundentInfo.objects.create(username=username, password=password) info.save() return HttpResponse("已保存数据") else: return HttpResponse("请重新输入")