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("請重新輸入")