微信小程序登录对接Django后端实现JWT方式验证登录

hasUserInfo: true

})

app.globalData.isLogin = true

}

})

}

})

}

})

}

注销方法

logout: function(res) {

this.setData({

isLogin:false,

hasUserInfo:false

})

app.globalData.isLogin = false

wx.removeStorageSync(‘jwt_token’)

wx.removeStorageSync(‘user_id’)

},

Django后端的实现


首先安装djangorestframework-jwt

这里不使用他默认的登录接口,如下所示

在这里插入图片描述

在这里插入图片描述

它提供了手动签发token和解密token的功能,因此最好自己实现

手动签发token

jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER

jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER

payload = jwt_payload_handler(user)

token = jwt_encode_handler(payload)

手动解密token

jwt_decode_handler = api_settings.JWT_DECODE_HANDLER

user_dict = jwt_decode_handler(token)

user_id = user_dict[‘user_id’]

后端换取openid


class OpenId:

def init(self, jscode):

self.url = ‘https://api.weixin.qq.com/sns/jscode2session’

self.app_id = env.str(‘APPID’)

self.app_secret = env.str(‘APPSECRET’)

self.jscode = jscode

def get_openid(self):

url = self.url + “?appid=” + self.app_id + “&secret=” + self.app_secret + “&js_code=” + self.jscode + “&grant_type=authorization_code”

res = requests.get(url)

try:

openid = res.json()[‘openid’]

session_key = res.json()[‘session_key’]

except KeyError:

return ‘fail’

else:

return openid, session_key

#小编整理一套Python资料和PDF,有需要Python学习资料可以加学习群:631441315 ,反正闲着也是闲着呢,不如学点东西啦~~

后端返回openid接口实现


这里只使用简单的FBV视图

注:前端传来的值无法从request.POST中接收到,只能使用如下方法

@require_http_methods([‘POST’])

@csrf_exempt

def GetOpenIdView(request):

data = json.loads(request.body)

jscode = data[‘jscode’]

openid, session_key = OpenId(jscode).get_openid()

return JsonResponse({

‘openid’: openid,

‘session_key’: session_key

})

后端登录接口实现


如果不存在用户则自动创建

为了简单,用户名和密码都是openid

@require_http_methods([‘POST’])

@csrf_exempt

def login_or_create_account(request):

data = json.loads(request.body)

print(data)

openid = data[‘openid’]

nickname = data[‘nickname’]

avatar_url = data[‘avatar_url’]

gender = data[‘gender’]

try:

user = User.objects.get(username=openid)

except User.DoesNotExist:

user = None

if user:

user = User.objects.get(username=openid)

else:

user = User.objects.create(

username=openid,

password=openid,

nickname=nickname,

avatar_url=avatar_url,

gender=gender

)

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

1401c05e862fe4e9.png)

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序是一种轻量级的应用程序,通过微信进行访问和使用。而Django是一种使用Python编写的高级Web开发框架,可以轻松构建复杂和高性能的Web应用程序。 将微信小程序Django后端部署结合起来,可以实现小程序和服务器之间的数据交互和业务逻辑处理。以下是微信小程序Django后端部署的步骤: 1. 准备环境:首先确保已经安装了Python和Django。可以使用pip安装Django,然后创建一个Django项目。 2. 编写后端代码:在Django项目中,创建一个API视图,用于接收和处理来自小程序的请求。可以使用Django的URL路由器来将请求路由到相应的API视图上。 3. 数据库配置:在Django的settings.py文件中配置数据库连接,以便后端可以从数据库中读取和写入数据。可以选择使用MySQL、PostgreSQL或者SQLite作为数据库。 4. 编写接口逻辑:在API视图函数中,编写处理小程序请求的代码。可以根据需求查询数据库、处理数据、验证用户身份等等。 5. 部署到服务器:将Django项目部署到服务器上,可以选择使用Nginx+uWSGI、Apache+mod_wsgi等方式来进行部署。 6. 小程序调用后端接口:在小程序中使用wx.request方法来发起HTTP请求,调用Django后端提供的API接口。 7. 数据交互和处理:通过HTTP请求和响应,实现小程序Django后端之间的数据交互和业务逻辑处理。可以使用JSON数据格式进行数据传递和解析。 通过以上步骤,就可以将微信小程序Django后端部署结合起来。这样,小程序用户可以通过小程序界面进行各种操作,而后端服务器会相应地处理请求并返回相应的数据给小程序。这种架构可以使小程序更加强大和灵活,同时也能为开发者提供更多的数据处理和业务逻辑的扩展性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值