程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

梅科爾工作室——Django+HarmonyOS實現用戶登錄

編輯:Python

Django+HarmonyOS實現用戶登錄

前言

使用軟件:pycharm專業版、DevEco studio
文章中的mm為簡寫


一、使用pymysql連接數據庫

# connect mysql
try:
cnt = pymysql.connect(host='localhost',
port=3306,
user='用戶',
mm='',
db='數據庫名稱',
charset='utf8')
print('數據庫連接成功')
except pymysql.Error as e:
print('數據庫連接失敗' + str(e))

二、後端連接數據庫驗證

# 登錄方法
class login(APIView):
def post(self, request):
username = request.data.get('username') # 獲取前端傳輸的用戶名和密碼
password = request.data.get('password')
# print(username)
# print(password)
cur = cnt.cursor() # 創建sql游標
sql = 'select * from login where name=%s' # sql語句查詢指定表指定元素
values = (username)
try:
if cur.execute(sql, values):
cnt.commit()
results = cur.fetchall()
print(results)
for row in results: # 循環調出用戶名和密碼
Pusername = row[1]
Ppassword = row[2]
# print(Pusername)
# print(Ppassword)
if password in Ppassword: # 驗證
print('賬號密碼驗證通過')
return HttpResponse('登陸成功')
else:
print('查無此人')
return HttpResponse('查無此人')
except pymysql.Error as e:
print('查無此人'+str(e))
return HttpResponse('請求失敗')

注意需要在下級urls.py文件中設置路由

因為login方法為類方法,不能直接使用views.login調用,需要使用as_view()方法,這個方法將函數打包在views中,返回符合要求的一個request

注意/符號

from .views import login
urlpatterns = [
path('login/', login.as_view())
]

三、HarmonyOS前端實現

需要注意的幾個點主要是HarmonyOSfetch()方法進行網絡請求,以及數據格式的解析

# login.js
import fetch from '@system.fetch';
import qs from 'querystring';
import router from '@system.router';
export default{

data:{

winfo:""
},
inputAccount(e){
 // 獲取文本框數據
this.username = e.value;
},
inputPassword(e){

this.mm = e.value;
},
onClick(){

fetch.fetch({
 // 發送請求
url:`http://127.0.0.1:8000/目標文件/login/`,
data: qs.stringify({
'username':'this.username', 'mm':'this.mm'}), // 發送到後端的數據
responseType:'json',
method:'POST',
success:(resp)=>
{

this.winfo = resp.data;
console.log('返回的數據:'+this.winfo)
if(this.winfo=='登陸成功'){
 // 登錄成功後跳轉頁面
router.push({

uri:'pages/request/request'
})
}
},
fail:(resp)=>
{

this.winfo = resp.data;
console.log('獲取數據失敗:' + this.winfo)
}
})
}
}

注意:需在config.js中配置好網絡請求


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved