当前位置:   article > 正文

HarmonyOS+Django前后端交互案例_harmonyos怎么做前后端交互

harmonyos怎么做前后端交互

目录

前端代码

hml页面代码编写:

后端代码

urls.py

models.py

views.py


前端代码

HML文件

  1. <div class="container">
  2. <div class="detail1">
  3. <text class="name">
  4. 姓名:
  5. </text>
  6. <text class="text">{{detail[0].name}}</text>
  7. </div>
  8. <div class="detail1">
  9. <text class="name">
  10. 年龄:
  11. </text>
  12. <text class="text">{{detail[0].age}}</text>
  13. </div>
  14. <div class="detail1">
  15. <text class="name">
  16. 身高:
  17. </text>
  18. <text class="text">{{detail[0].high}}</text>
  19. </div>
  20. <div class="detail1">
  21. <text class="name">
  22. 体重:
  23. </text>
  24. <text class="text">{{detail[0].weight}}</text>
  25. </div>
  26. <div class="detail1">
  27. <text class="name">
  28. 位置:
  29. </text>
  30. <text class="text">{{detail[0].DiseasedSite}}</text>
  31. </div>
  32. <button onclick="onClick">刷新</button>
  33. <text>{{winfo}}</text>
  34. <button onclick="onClick1">修改</button>
  35. </div>

JS文件

在js文件中编写逻辑代码,以及各个部分默认的数据。onClick用于向后端发送数据,获取数据由于priviewer中的输入框无法读取键盘输入,只能采用固定的输入数据,这里我们使用的是“id:1”。

onClick1用于修改后端的数据

  1. import router from '@ohos.router';
  2. import qs from "querystring";
  3. import fetch from '@system.fetch';
  4. export default {
  5. data: {
  6. winfo: "llll",
  7. detail:[{
  8. name:"null",
  9. age:"null",
  10. high:"null",
  11. weight:"null",
  12. DiseasedSite:"null"
  13. }]
  14. },
  15. onClick(){
  16. // 发送网络请求
  17. fetch.fetch({
  18. url: `http://127.0.0.1:8000/login/GetData/`, // 网络请求的路径
  19. data: qs.stringify({'id': "1"}), //将数据转化为字符串,向后端发送的数据
  20. responseType:"json", //请求的参数类型
  21. method: "POST", //发送的网络请求类型
  22. success:(resp)=> //发送成功后进行的操作
  23. {
  24. var getdata
  25. getdata = JSON.parse(resp.data)
  26. this.detail[0].name = getdata[0].name
  27. this.detail[0].age = getdata[0].age
  28. this.detail[0].high = getdata[0].high
  29. this.detail[0].weight = getdata[0].weight
  30. this.detail[0].DiseasedSite = getdata[0].diseasedSite
  31. },
  32. fail:(resp)=> // 发送失败后进行的操作
  33. {
  34. console.log("获取数据失败:"+this.detail) //在日志中打印
  35. }
  36. })
  37. },
  38. onClick1(){
  39. fetch.fetch({
  40. url: `http://127.0.0.1:8000/login/test/`,
  41. data: qs.stringify({"id": "1","name": "lqc40"}),
  42. responseType: "json",
  43. method: "POST",
  44. success:(resp)=>
  45. {
  46. console.log("成功")
  47. },
  48. fail:(resp)=>
  49. {
  50. console.log("失败")
  51. }
  52. })
  53. }
  54. }

后端代码

urls.py

在url中写入路径

  1. from django.urls import path
  2. from login.views import GetData, test
  3. app_name = "login"
  4. urlpatterns = [
  5. path('GetData/', GetData.as_view()),
  6. path('test/', test.as_view())
  7. ]

models.py

创建一个数据库的表,其中包含的数据有以下几种

  1. class Save(models.Model):
  2. Name = models.CharField('用户名', max_length=30, unique=True)
  3. Age = models.IntegerField('年龄')
  4. High = models.IntegerField('身高')
  5. Weight = models.IntegerField('体重')
  6. DiseasedSite = models.CharField('位置', max_length=10)

views.py

GetData接受前端数据,并将后端数据发送到前端

test接受前端数据,确认那条数据之后对数据进行修改

  1. class GetData(APIView):
  2. def post(self, request):
  3. try:
  4. id = request.data.get('id')
  5. print(id)
  6. result = models.Save.objects.filter(id=id).last()
  7. name = result.Name
  8. age = result.Age
  9. high = result.High
  10. weight = result.Weight
  11. diseasedSite = result.DiseasedSite
  12. alldata = []
  13. alldata.append({
  14. 'name': name, 'age': age, 'high': high, 'weight': weight, 'diseasedSite': diseasedSite
  15. })
  16. alldata_json = json.dumps(alldata, ensure_ascii=False)
  17. return HttpResponse(alldata_json)
  18. except models.Save.DoesNotExist as e:
  19. print('刷新失败')
  20. else:
  21. return HttpResponse('请求失败')
  22. class test(APIView):
  23. def post(self, request):
  24. id = request.data.get('id')
  25. print(id)
  26. wname = request.data.get('name')
  27. result = models.Save.objects.filter(id=1).last()
  28. models.Save.objects.filter(id=id).update(Name=wname)
  29. name = wname
  30. age = result.Age
  31. high = result.High
  32. weight = result.Weight
  33. diseasedSite = result.DiseasedSite
  34. alldata = []
  35. alldata.append({
  36. 'name': name, 'age': age, 'high': high, 'weight': weight, 'diseasedSite': diseasedSite
  37. })
  38. alldata_json = json.dumps(alldata, ensure_ascii=False)
  39. return HttpResponse(alldata_json)

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号