首页  /  后端技术  /  Django  /  Django开发微信公众号(二)

Django开发微信公众号(二)

 作者:白驹    来源:原创    浏览:165    日期:2020年8月10日  

Django开发微信公众号(二)

消息回复

服务器配置的方法除了验证服务器之外还可以进行用户消息回复功能,下面是做的消息回复功能,django默认了csrf请求所以在微信请求时需要绕过csrf引入from django.view.decorators.csrf import csrf_exempt 绕过csrf验证,并且引入了wechatpy库对消息进行回复喝xml解析,代码如下:
from django.http.response import HttpResponse
from django.view.decorators.csrf import csrf_exempt  #绕过csrf验证
from wechatpy.utils import check_signature
from wechatpy.exceptions import InvalidSignatureException
from wechatpy import parse_message #解析微信服务器推送的 XML 消息
from wechatpy.replies import TextReply#文字消息回复

token = "dqwpjoopqfg44"  #自己设置的token

@csrf_exempt
def server(request):
    #接收服务器验证
    if request.method == "GET":
        signature = request.GET.get('signature')
        timestamp = request.GET.get('timestamp')
        nonce = request.GET.get('nonce')
        echo_str = request.GET.get('echostr')
        try:
            check_signature(token, signature, timestamp, nonce)
        except InvalidSignatureException:
            echo_str = '错误的请求'
        response = HttpResponse(echo_str)
        return response
    # 接收来自用户的消息并进行回复
    if request.method == "POST":
        user_reply = parse_message(request.body)#解析微信服务器推送的 XML 消息
        if user_reply.type == "text": #判断用户发送消息内容这里以文字为例,其他可自行查阅wechatpy文档
        contet = user_reply.content  #接受用户发送消息内容
            try:
                reply = TextReply(content=contet,message=user_reply).render()
            except Exception as e:
                pass
        return HttpResponse(reply)

展示效果

如果有兴趣可以研究一下wechatpy文档,wechatpy是一种强大的微信开发库
  • 评论
  • 相关评论