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("请重新输入")