from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from django.views.generic.base import View
from lxml import etree
from django.utils.encoding import smart_str
import hashlib
import time
from django.template.loader import render_to_string
from django.views.decorators.csrf import ensure_csrf_cookie
@csrf_exempt
@ensure_csrf_cookie
def weixin(request):
if request.method == 'GET':
signature = request.GET.get('signature', None)
timestamp = request.GET.get('timestamp', None)
nonce = request.GET.get('nonce', None)
echostr = request.GET.get('echostr', None)
token = 'WEIXIN_TOKEN'
hashlist = [token, timestamp, nonce]
hashlist.sort()
hashstr = ''.join([s for s in hashlist])
hashstr = hashlib.sha1(hashstr.encode(encoding='utf-8')).hexdigest()
if hashstr == signature:
return HttpResponse(echostr)
if request.method == 'POST':
data = smart_str(request.body)
print(data)
xml = etree.fromstring(data)
fromUser = xml.find('ToUserName').text
toUser = xml.find('FromUserName').text
msgType = xml.find('MsgType').text
nowtime = str(int(time.time()))
if msgType =='text':
content = xml.find('Content').text
rendered = render_to_string('wechat/text.xml',{'toUser': toUser,'fromUser': fromUser,'nowtime': nowtime,'content': '文本消息,功能正在开发中'})
return HttpResponse(rendered)
if msgType =='image':
rendered = render_to_string('wechat/text.xml',{'toUser': toUser,'fromUser': fromUser,'nowtime': nowtime,'content': '图片消息,功能正在开发中'})
return HttpResponse(rendered)
if msgType =='voice':
rendered = render_to_string('wechat/text.xml',{'toUser': toUser,'fromUser': fromUser,'nowtime': nowtime,'content': '语音消息,功能正在开发中'})
return HttpResponse(rendered)
if msgType =='video':
rendered = render_to_string('wechat/text.xml',{'toUser': toUser,'fromUser': fromUser,'nowtime': nowtime,'content': '视频消息,功能正在开发中'})
return HttpResponse(rendered)
if msgType =='shortvideo':
rendered = render_to_string('wechat/text.xml',{'toUser': toUser,'fromUser': fromUser,'nowtime': nowtime,'content': '小视频消息,功能正在开发中'})
return HttpResponse(rendered)
if msgType =='location':
rendered = render_to_string('wechat/text.xml',{'toUser': toUser,'fromUser': fromUser,'nowtime': nowtime,'content': '地理位置消息,功能正在开发中'})
return HttpResponse(rendered)
if msgType =='link':
rendered = render_to_string('wechat/text.xml',{'toUser': toUser,'fromUser': fromUser,'nowtime': nowtime,'content': '链接消息,功能正在开发中'})
return HttpResponse(rendered)