Django和HarmonyOS-FA模型ArkTS语言的登录功能实现

目录

前言

一、Arkts(DevEco Studio)

登陆页面及登录逻辑实现(.ets)

二、Django后端

1、实现数据库的连接(views.py)

2、登录功能实现(views.py)

三、实现Django、mysql、arkts之间的交互

1、Django连接数据库

2、预览器中输入登录账号和密码

3、Django接收数据并与mysql数据库的数据进行验证

4、返回数据到Arkts

四、注意事项

1、配置setting中的database

2、models

3、在urls.py中添加login

4、数据库要添加数据


 

 

 

前言

通过Django与Arkts的连接,实现登录功能

一、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连接数据库

b1b2a0d319e01db73f4a4b4f5020ba06.jpeg

2、预览器中输入登录账号和密码

1f0bc7a84d29496d8783df00951f7087.png

3、Django接收数据并与mysql数据库的数据进行验证

显示用户输入的账号,若成功验证则显示登陆成功

3a96dbe76f6c45139c27f65155669c60.png

 显示用户输入的账号,若未成功验证则显示密码错误

f972c09d2229448c906da528adaae1bf.png

4、返回数据到Arkts

若成功验证则返回数据到arkts,页面进入首页c18e76cdf93a429ea3842981c5aea250.png

faa41f91d4e54f90916cbbe504bf13be.png

若未成功验证则返回数据到arkts,页面不进入首页

cc126536e4d54911bc0f638c447bff69.png

31311cff96194c9bb5b4a88ba2e86260.png

 

四、注意事项

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、数据库要添加数据

例如:

1b48fdbc898f44c8b901ecc68cb6ac94.png

 

 

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值