目录
前言
本文记录梅科尔工作室IoT组DjangoWeb 应用框架+MySQL数据库第五次培训笔记,主要包括鸿蒙 app 登录请求与实现(另外一种方式:不使用 model.py 文件,不执行表迁移)和动态读取文本框内数据内容 2.Django 后端数据验证(MySQL 数据库数据查询)
这里感谢潘学姐的讲解!辛苦啦!
1.App 登录请求与实现
1.1.views.py连接数据库
代码如下:
try:
ct = pymysql.connect(host='127.0.0.1', # 或者是写localhost
port=3306, # 端口号
user='root', # MySQL登录用户名
password='xxx', # MySQL登录密码
db='test2', # 要连接的数据库名称
charset='utf8') # 表的字符集
print("数据库连接成功")
except pymysql.Error as er:
print('连接失败'+str(er))
1.2.前端编程
Hml代码如下:
<div class="cb-container">
<div class="cb-title">
<text class="cb-title-text">
登录测试
</text>
</div>
<image src="../../common/images/123.png"></image>
<div class="container1">
<div>
<input name="username" class="input" type="text" maxlength="10" placeholder="用户名" onchange="inputAccount"/>
</div>
</div>
<div class="container2">
<div>
<input name="password" class="input" type="password" maxlength="10" placeholder="密码" onchange="inputPassword"/>
</div>
</div>
<div class="container">
<button onclick="onClick" class="btn-map" style="background-color: darkturquoise; height: 50px;">立即登录</button>
</div>
<div>
<text>
{{winfo}}
</text>
</div>
</div>
效果如下:
JS文件代码如下:
import router from '@system.router';
import fetch from '@system.fetch';
import qs from 'querystring';
export default {
data:{
winfo:"" //定义winfo用于存放后端反馈数据
},
inputAccount(a){
this.username = a.value;
},
inputPassword(a){
this.password = a.value;
},
onClick(){
fetch.fetch({
url:`http://127.0.0.1:8007/student/AppReq1/`, //后端路径,一定不能错,用的是反单引号
data: qs.stringify({'username':'123456','password':'12345'}),//验证,将字符串转发给后端,后端会受到这个请求
responseType:"json",//请求的参数类型
method: "POST",
success:(resp)=>
{
this.winfo = resp.data;//令获取到的后端数据赋给winfo
console.log("返回的数据:"+this.winfo);//打印出数据
},
fail:(resp)=>
{
this.winfo = resp.data;//令获取到的后端数据赋给winfo
console.log("获取数据失败:"+this.winfo)//打印出数据
}
});
}
}
css代码不再展示,写的很烂啊哈哈,头疼!
1.2.建表(不依赖DJango)
这里使用的是Navicat,在左侧栏,选中想要建表的数据库,右键选择新建表即可,原理就是跳过Django直接对数据库操作,不需要代码,如下所示:
注意,建好表之后,后端代码要和表名以及表中数据对应。
1.3.后端编程
路径新增 login
from django.urls import path
from . import views
from student.views import AppReq1,login
app_name ='student'
urlpatterns = [
path('AppReq1/', AppReq1.as_view()),
path('login/', login.as_view()),
]
views.py新增login类
class login(APIView): # login类视图
def post(self,request): # 创建post方法
username = request.data.get("username") # 获取前端反馈值username
password = request.data.get("password") # 获取前端反馈值password
print(username)
cur = ct.cursor() # 创建游标
sql = "select * from login where name =%s" # sql语句查询数据表数据,要和数据表一样
values = (username)
try:
if cur.execute(sql, values): # 执行sql语句
ct.commit()
results = cur.fetchall()
for row in results:
# 获取到的列表对应列,注意id为第0列
Pusername = row[1] # 获取数据name
Ppassword = row[2] # 获取数据pwd
print(Pusername) # 打印Pusername验证是否获取
print(Ppassword) # 打印Ppassword验证是否获取
if password ==Ppassword: # 验证密码是否正确
print("账号密码验证通过")
return HttpResponse('欢迎尊贵的'+Pusername)
else:
print('查无此人!')
except pymysql.Error as e:
print("查无此人:"+str(e))
return HttpResponse("请求失败")
注意点:前端反馈给后端的数据键值对的“键”,一定要和后端对应,后端获取表中数据一定要和表中数据对应。
2.效果展示
前端展示:
后端展示:
总结
以上就是第四次培训的笔记内容和效果展示本文,主要就是前后端与数据的对应,感谢潘姐!!!