当前位置: 首页 > news >正文

信阳市两学一做网站基于node网站毕设代做

信阳市两学一做网站,基于node网站毕设代做,国际国内热点新闻事件,郑州英语网站建设教程#xff1a;在Django中实现微信授权登录 本教程将引导您如何在Django项目中实现微信授权登录。在本教程中#xff0c;我们将使用自定义的用户模型User#xff0c;并通过微信提供的API来进行用户认证。 在进行以下教程之前#xff0c;请确保你已经在微信开放平台添加了…教程在Django中实现微信授权登录 本教程将引导您如何在Django项目中实现微信授权登录。在本教程中我们将使用自定义的用户模型User并通过微信提供的API来进行用户认证。 在进行以下教程之前请确保你已经在微信开放平台添加了网站应用并获得了 1.WECHAT_APPID 2.WECHAT_SECRET 3.以及设置了回调域即认证的网址 WECHAT_REDIRECT_URI 比如我的回调域就是https://www.xxx.comDjango的url中我则写成/wechat/callback/视图中就可以进行回调使用了这个没有绝对重要的是设置自己的网址为回调域 第1步创建自定义用户模型 首先在您的Django应用中创建一个自定义的用户模型。在models.py文件中定义模型 from django.db import models# 这里一定要继承AbstractUser才行 from django.contrib.auth.models import AbstractUserclass User(AbstractUser):# 不需要显式添加id字段Django会自动创建openid models.CharField(max_length128, uniqueTrue, nullTrue, blankTrue)username models.CharField(max_length150, nullTrue, uniqueTrue)# 不需要再次声明password字段因为AbstractUser类已经包含了password字段# email字段已在AbstractUser中定义只需指定null和blank即可email models.EmailField(nullTrue, blankTrue)phone_number models.CharField(max_length15, nullTrue, blankTrue)real_name models.CharField(max_length128, nullTrue, blankTrue)creation_date models.DateTimeField(auto_now_addTrue)role_type models.CharField(max_length50, nullTrue, blankTrue)avatar models.URLField(nullTrue, blankTrue)gender models.CharField(max_length10, nullTrue, blankTrue)birthday models.DateField(nullTrue, blankTrue)address models.CharField(max_length255, nullTrue, blankTrue)# 新增加的微信字段nickname models.CharField(max_length64, nullTrue, blankTrue)sex models.PositiveSmallIntegerField(choices((0, 未知), (1, 男), (2, 女)), nullTrue, blankTrue)language models.CharField(max_length32, nullTrue, blankTrue)city models.CharField(max_length32, nullTrue, blankTrue)province models.CharField(max_length32, nullTrue, blankTrue)country models.CharField(max_length32, nullTrue, blankTrue)headimgurl models.URLField(nullTrue, blankTrue)privilege models.JSONField(defaultlist, blankTrue, nullTrue) # 使用可调用的默认值unionid models.CharField(max_length128, nullTrue, blankTrue)# last_login字段已经在AbstractBaseUser中不需要重复声明# 如果你没有特别需要覆盖save()方法也可以省略这个方法# def save(self, *args, **kwargs):# super(User, self).save(*args, **kwargs)classmethoddef create_or_update_from_wechat(cls, wechat_data):user, created cls.objects.update_or_create(openidwechat_data[openid],defaults{nickname: wechat_data.get(nickname, ),sex: wechat_data.get(sex, 0),language: wechat_data.get(language, ),city: wechat_data.get(city, ),province: wechat_data.get(province, ),country: wechat_data.get(country, ),headimgurl: wechat_data.get(headimgurl, ),privilege: wechat_data.get(privilege, []),unionid: wechat_data.get(unionid, ),})return user第2步配置settings.py 在settings.py文件中进行以下配置 # 登录认证系统后端二者任选其一即可 AUTHENTICATION_BACKENDS [django.contrib.auth.backends.ModelBackend,allauth.account.auth_backends.AuthenticationBackend, ]# index 是应用的名字User 是你的自定义用户模型的类名 AUTH_USER_MODEL index.User# 用户登录的url名称 LOGIN_URL user_login# 登录成功调回地址的url名称 LOGIN_REDIRECT_URL index 第3步实现登录视图 在views.py中创建登录视图和微信回调视图 from django.shortcuts import redirect from django.conf import settings import requests from urllib.parse import quote from django.http import HttpResponseRedirect from django.contrib.auth import logout from django.http import JsonResponse from .models import User from django.contrib.auth import login from django.utils import timezonedef user_login(request):appid settings.WECHAT_APPIDredirect_uri quote(settings.WECHAT_REDIRECT_URI)url fhttps://open.weixin.qq.com/connect/qrconnect?appid{appid}redirect_uri{redirect_uri}response_typecodescopesnsapi_loginstateSTATE#wechat_redirectreturn HttpResponseRedirect(url)def logout_view(request):logout(request)# 重定向到登录页面或者主页return redirect(index)def wechat_login_callback(request):code request.GET.get(code)# 利用code获取access_tokenappid settings.WECHAT_APPIDsecret settings.WECHAT_SECRETurl fhttps://api.weixin.qq.com/sns/oauth2/access_token?appid{appid}secret{secret}code{code}grant_typeauthorization_coderesponse requests.get(url)data response.json()access_token data.get(access_token)openid data.get(openid)url fhttps://api.weixin.qq.com/sns/userinfo?access_token{access_token}openid{openid}response requests.get(url)user_info response.json()# 创建或者更新用户信息user User.create_or_update_from_wechat(user_info)# 更新 last_login 字段user.last_login timezone.now()user.save(update_fields[last_login])# 选择要登录的后端认证系统这里可以选择Django自带的也可以选择微信的backend django.contrib.auth.backends.ModelBackend# backend allauth.account.auth_backends.AuthenticationBackenduser.backend backend # 设置用户实例的后端属性login(request, user, backendbackend) # 登录用户传入backend参数# 这里我随便写了一个url名称return redirect(bbworld)第4步配置URLs 在urls.py中将路径与视图关联起来 from django.urls import path from . import viewsurlpatterns [path(login/, views.user_login, nameuser_login),path(logout/, views.logout_view, namelogout),path(wechat/callback/, views.wechat_login_callback, namewechat_callback),# 其他URLs... ]第5步使用login_required装饰器保护视图 在任何需要用户登录的视图前使用login_required装饰器 from django.shortcuts import render from django.contrib.auth.decorators import login_requiredlogin_required def bbworld(request):return render(request, bbworld.html)第6步处理未登录的重定向 当用户尝试访问受login_required保护的页面时他们将被重定向到在settings.py中定义的LOGIN_URL然后授权登录成功后反调回LOGIN_REDIRECT_URL “index”。 在Django中当您对模型进行了更改之后例如添加了新的字段或修改了字段的类型您需要创建一个新的数据库迁移以便将这些更改应用到数据库中。以下是如何进行数据迁移的步骤 第7步数据迁移到数据库 这一步也可以建好模型的时候就进行操作另外确保setting里面已经设置好了数据库无论是sqlite还是mysql python manage.py makemigrations python manage.py migrate第8步运行和测试 运行您的Django项目并测试登录流程。确保所有URLs正确配置并且重定向和回调都按预期工作。 python manage.py runserver访问登录URL并通过微信扫码登录来测试整个流程。 以上就是在Django中实现微信授权登录的基本步骤。 因为这个事情花了我很多时间我也希望你能通过我的教程快速完成业务如果有不清楚的欢迎留言咨询我会第一时间回复谢谢祝你也学习愉快
http://www.dnsts.com.cn/news/98320.html

相关文章:

  • 怎么做直播网站vue.js做个人网站
  • 网站建设对企业的发展一般使用的分辨率是多少dpi?
  • 网站页面框架设计影响用户WordPress部分内容登录可见
  • 电子商务网站设计小结长沙市做网站公司
  • .net做的网站旺店通app手机企业版下载
  • 重庆市网站备案厦门百度竞价开户
  • 坂田英文网站制作小程序注册商标第几类
  • 12306网站建设杭州网站制作方法
  • 萍乡海绵城市建设官方网站支付网站建设推广的会计分录
  • 天津城市建设招标网站代理记账公司注册需要什么条件
  • 网站建设规划要点详解wordpress留言区
  • php购物网站开发uml图j建设局域网网站
  • 河南省能源规划建设局网站重庆有什么好玩的旅游景点
  • 桥梁建设网站哪个网站做网站好
  • 服务好的郑州网站建设百度推广费用可以退吗
  • 网站产品详情用哪个软件做的东莞网站建设咨询
  • 椒江网站建设广州网站开发设计公司
  • 360建站平台个人域名备案需要什么
  • 做机加工的网站房屋中介做网站的书籍
  • 内蒙古生产建设兵团四师三十四团知青网站园林效果图网站
  • discuz培训网站模板下载企业网站优化包括哪三个方面
  • 网站开发讲座一个网站推广
  • 东城做网站郑州网站建设及托管
  • php 网站后台想做外贸生意如何起步
  • 网站 改版 方案企业网络营销案例分析
  • 网站维护的方式有哪几种专业做医药招聘的网站
  • 有哪些做壁纸的网站好百度识图网页版在线
  • 做外包网站小生意是做网站还是公众号
  • 华硕建设公司网站手机必备软件100个
  • 网站制作怎样盈利记账公司