django学习之路(四)开发微信公众号

时间:2022-12-22 23:52:24

开发微信公众号

我们可以将之前创建的myblog来完成这件事情。我们之前创建了项目myblog,并在myblog中新建了应用blog。现在我们只需要两步就可完成微信公众号token的验证。
第一步:编写函数体(myblog/blog/views)

# -*- coding: utf-8 -*-
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from django.views.generic.base import View
import hashlib


class token(View):
@csrf_exempt
def dispatch(self, *args, **kwargs):
return super(token, self).dispatch(*args, **kwargs)

def get(self, request):
# 下面这四个参数是在接入时,微信的服务器发送过来的参数
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是我们自己来定义的,并且这个要填写在开发文档中的Token的位置
token = 'weixin'

# 把token,timestamp, nonce放在一个序列中,并且按字符排序
hashlist = [token, timestamp, nonce]
hashlist.sort()

# 将上面的序列合成一个字符串
hashstr = ''.join([s for s in hashlist])

# 通过python标准库中的sha1加密算法,处理上面的字符串,形成新的字符串。
hashstr = hashlib.sha1(hashstr).hexdigest()

# 把我们生成的字符串和微信服务器发送过来的字符串比较,
# 如果相同,就把服务器发过来的echostr字符串返回去
if hashstr == signature:
return HttpResponse(echostr)

第二步:配置urls
这一步需要改动两个urls.py
一个是myblog目录下面的:

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^wx/',include('blog.urls'))
]

在blog目录下面的views:

from django.conf.urls import url
from . import views

urlpatterns = [
url(r'^token/$',views.token)
]

填写的url为http://127.0.0.1/wx/token
完成。