这次学习的是将Django与HarmonyOS前端交互起来
前端搭建首先建立一个基础页面(这里因为主要学习的是交互方法,所以界面没有做太多修饰)
Welcome
{{winfo}}
js请求
需要准备的库:
qs库:通过npm install querystring获取,nmp由node.js自带
fetch:提供了一些js的接口,可以用于请求与响应。软件自带库,介绍网址:
使用 Fetch - Web API 接口参考 | MDN (mozilla.org)
import fetch from '@system.fetch';
import qs from 'querystring';
export default{
data:{
winfo:"",
},
onClick(){
fetch.fetch({
url:'http://“自己的请求端口”/app01/AppReq1/' ,
data:qs.stringify({'id':'1'}),
responseType:"json",
method:"POST",
success:(resp)=>{
this.winfo = resp.data;
console.log("返回数据:"+this.winfo)
},
fail:(resp)=>{
this.winfo = resp.data;
console.log("获取数据失败:"+this.winfo)
}
});
}
}
后端Django搭建
然后我们转入django后端,部署urls(其中app01是之前创建过的App)
项目目录连接数据库的操作在上两篇文章已讲述,详情移步这里:
(32条消息) SQL 学习笔记(一)_冰潔的博客-CSDN博客
(32条消息) Django学习笔记(二次学习)(1)_冰潔的博客-CSDN博客
接下来我们开始url和view的部署 djangoProject1.urlsfrom django.urls import path,include
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('app01/', include('app01.urls'))
]
app01.urls
from django.contrib import admin
from django.urls import path
from . import views
app_name = 'app01'
urlpatterns = [
path('AppReq1/', views.AppReq1.as_view(), name='AppReq1'),
]
app01.views
import pymysql
from django.shortcuts import HttpResponse
from rest_framework.views import APIView
from app01.models import Book
try:
con = pymysql.connect(host='127.0.0.1',
port=3306,
user='youname',
password='youpassword',
db='youmysqul',
charset='utf8')
print("连接成功")
except pymysql.Error as e:
print('数据库连接失败' + str(e))
class AppReq1(APIView):
def post (self, request):
result = Book.objects.all()
arr = []
for i in result:
content = {'序号': i.id,
'书名': i.title,
'出版社': i.publish,
'出版日期': i.pub_date}
arr.append(content)
# print(arr)
# print(type(arr))
id = request.data.get('id')
# title = request.data.get('title')
print(id)
return HttpResponse(arr)
前提需要引入APIView接口,这样在视图中不会报错。
首先要有基础的库,在终端中输入:
pip install djangorestframework
在view视图中引入APIView(更方便的完成响应)
from rest_framework.views import APIView
运行首先在django终端中输入
python manage.py runserver + 端口号
然后我们返回到harmonyos前端,点击preview,然后点击“请求响应”
数据获取成功!
后端也会收到前端返回过来的数据



