前言
一、Arkts(DevEco Studio)
登陆页面及登录逻辑实现(.ets)
import router from '@ohos.router';
import http from '@ohos.net.http';
@Entry
@Component
struct Index {
@State username: string = ''
@State password: string = ''
S_login() {
let httpRequest = http.createHttp();
let url = "http://127.0.0.1:8000/S_app/S_login/"
httpRequest.request(
// 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
url,
{
method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
// 开发者根据自身业务需要添加header字段
header: {
'Content-Type': 'application/json'
},
// 当使用POST请求时此字段用于传递内容
extraData: {
"username": this.username,
"password": this.password
},
connectTimeout: 6000, // 可选,默认为60000ms
readTimeout: 6000, // 可选,默认为60000ms
}, (err, data) => {
if (!err) {
// data.result为HTTP响应内容,可根据业务需要进行解析
if (data.responseCode == 200) {
console.info("传递成功")
console.info("从服务器返回接口返回数据成功,传递参数" + data.result)
}
console.info('Result:' + data.result);
console.info('code:' + data.responseCode);
// data.header为HTTP响应头,可根据业务需要进行解析
console.info('header:' + JSON.stringify(data.header));
console.info('cookies:' + data.cookies); // 8+
if(data.result == '登录成功') {
router.push({
url: 'pages/shouye',
});
}
} else {
console.info('error:' + JSON.stringify(err));
// 当该请求使用完毕时,调用destroy方法主动销毁。
httpRequest.destroy();
}
}
);
}
build() {
Row() {
Column({space:17}) {
TextInput({ placeholder: '输入手机号' })
.width(300)
.height(60)
.fontSize(20)
.onChange((value: string) => {
this.username = value
})
TextInput({ placeholder: '输入密码' })
.width(300)
.height(60)
.fontSize(20)
.type(InputType.Password)
.onChange((value: string) => {
this.password = value
})
Button('登录')
.width(300)
.height(60)
.fontSize(20)
.backgroundColor('#0F40F5')
.onClick(() => {
this.S_login();
})
}
.width('100%')
}
.height('100%')
}
}
二、Django后端
1、实现数据库的连接(views.py)
try:
con = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='123456',
db='S_app')
print('数据库连接成功')
except pymysql.Error as e:
print('数据库连接失败'+str(e))
2、登录功能实现(views.py)
class S_login(APIView):
def post(self, request):
username = request.data.get("username")
password = request.data.get("password")
print(username)
cur = con.cursor()
sql = 'select * from s_app_login where username=%s'
values = (username)
try:
if cur.execute(sql, values):
con.commit()
results = cur.fetchall()
for row in results:
Pusername = row[1]
Ppassword = row[2]
if password == Ppassword:
print('登录成功')
return HttpResponse('登录成功')
else:
print('密码错误')
return HttpResponse('密码错误')
else:
print('查无此人')
except pymysql.Error as e:
print('查无此人' + str(e))
return HttpResponse('请求失败')
三、实现Django、mysql、arkts之间的交互
1、Django连接数据库
2、预览器中输入登录账号和密码
3、Django接收数据并与mysql数据库的数据进行验证
4、返回数据到Arkts
四、注意事项
1、配置setting中的database
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'S_app',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
2、models
class login(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)
3、在urls.py中添加login
path('S_login/', S_login.as_view()),
4、数据库要添加数据
例如:
原文地址:https://blog.csdn.net/FushiYin/article/details/129938006
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_33744.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。