下面是利用Django和wechat-python-sdk创建微信服务器接入的方法的完整攻略:
1. 安装 Django 和 wechat-python-sdk
首先需要安装 Django 和 wechat-python-sdk(用于处理微信服务器接入)。可以使用 pip 来安装:
pip install Django wechatpy
2. 创建 Django 项目
在命令行中输入以下命令,创建一个 Django 项目:
django-admin startproject myproject
然后进入 myproject
目录。
3. 创建 Django 应用
在命令行中输入以下命令,创建一个 Django 应用:
python manage.py startapp wechat
4. 配置 settings.py
在 myproject
目录下的 settings.py
文件中,添加以下内容:
INSTALLED_APPS = [
# ...
'wechat',
]
MIDDLEWARE_CLASSES = [
# ...
'wechat.middleware.WeChatMiddleware',
]
WECHAT_TOKEN = 'your_wechat_token'
WECHAT_APPID = 'your_wechat_appid'
WECHAT_APPSECRET = 'your_wechat_appsecret'
WECHAT_ENCRYPT_MODE = 'normal'
需要将 your_wechat_token
、your_wechat_appid
和 your_wechat_appsecret
替换为自己的微信 Token、AppID 和 AppSecret。
5. 创建 wechat/views.py
在 wechat
应用下创建一个 views.py
文件,并添加以下内容:
from django.http import HttpResponse
from wechatpy import parse_message, create_reply
from wechatpy.crypto import WeChatCrypto
def wechat(request):
signature = request.GET.get('signature', '')
timestamp = request.GET.get('timestamp', '')
nonce = request.GET.get('nonce', '')
crypt = WeChatCrypto(WECHAT_TOKEN, WECHAT_AES_KEY, WECHAT_APPID)
encrypt_msg = request.body
msg = crypt.decrypt_message(encrypt_msg, signature, timestamp, nonce)
msg = parse_message(msg)
reply = create_reply('Hello, world!', msg)
reply = crypt.encrypt_message(reply.render(), nonce)
return HttpResponse(reply, content_type='application/xml')
需要将 WECHAT_AES_KEY
替换为自己的 AES 密钥。
6. 配置 urls.py
在 myproject
目录下的 urls.py
文件中,添加以下内容:
from django.urls import path
from wechat.views import wechat
urlpatterns = [
path('wechat/', wechat),
]
7. 运行 Django 服务器
在命令行中输入以下命令,运行 Django 服务器:
python manage.py runserver
8. 配置微信公众号
将服务器地址设置为 http://your.domain.com/wechat/
,将 Token、AppID 和 AppSecret 设置为之前在 settings.py
中配置的值。在微信后台验证接口时,应该能够得到“验证通过”的结果。
示例说明
这里给出两个示例,演示如何使用 wechat-python-sdk 处理微信服务器接入中的各种消息。
示例1:回复文本消息
在 wechat/views.py
中,添加以下代码:
from wechatpy.replies import TextReply
def wechat(request):
# ...
if msg.type == 'text':
reply = TextReply(content='You said: {}'.format(msg.content), message=msg)
reply = create_reply(reply, msg)
reply = crypt.encrypt_message(reply.render(), nonce)
return HttpResponse(reply, content_type='application/xml')
# ...
这段代码会回复一个文本消息,内容为用户发送的文本消息。
示例2:处理菜单事件
在 wechat/views.py
中,添加以下代码:
from wechatpy.replies import TextReply
def wechat(request):
# ...
if msg.type == 'event' and msg.event == 'click':
if msg.key == 'KEY1':
reply = TextReply(content='You clicked KEY1!', message=msg)
elif msg.key == 'KEY2':
reply = TextReply(content='You clicked KEY2!', message=msg)
else:
reply = TextReply(content='Unknown key!', message=msg)
reply = create_reply(reply, msg)
reply = crypt.encrypt_message(reply.render(), nonce)
return HttpResponse(reply, content_type='application/xml')
# ...
这段代码会处理用户点击菜单事件,根据用户点击的键值返回不同的文本消息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用django+wechat-python-sdk 创建微信服务器接入的方法 - Python技术站