Skip to main content

Django WeChat Extension

Project description

WeChat-Django

WeChat-Django旨在为接入微信公众平台的django开发者提供便捷的微信功能封装及最基本的后台管理支持.

项目官方地址: https://github.com/Xavier-Lam/wechat-django

本拓展基于wechatpy ,支持的最低django版本为1.11.

目前没有使用在生产环境使用本项目的案例,编写了部分单元测试,并进行了一部分简单的徒手测试.

0.1.0只是一个预览版本,可能存在较多bug,并且有api及数据结构变更可能,欢迎贡献代码

目录

功能

  • 公众号管理
  • 同步用户及用户查看,备注
  • 菜单同步,查看及发布
  • 同步公众号自动回复,管理自动回复,转发和自定义自动回复业务,接收消息日志
  • 永久素材同步及查看
  • 图文同步及查看
  • 服务号网页授权
  • 主动调用微信api封装
  • 微信网页授权
  • 后台权限管理

安装及配置

初次安装

  1. 安装pip install wechat-django[cryptography]pip install wechat-django[pycrypto]
  2. 在settings.py的INSTALLED_APPS中添加wechat_django
  3. 运行manage.py migrate wechat_django 来更新数据库结构
  4. 在urls.py 中引入wechat_django.urls, 将其配置到urlpatterns中

至此,您已可以开始轻松使用wechat_django.项目尚未提供具体的使用文档,如需客制化需求,烦请先阅读代码

直接加入项目

如果想将拓展安装到自己的项目下,并且自己改写本拓展,可采用pip install -e 安装

  1. 在你的项目的根目录运行pip install -e git+https://github.com/Xavier-Lam/wechat-django#egg=wechat-django[cryptography] --src ./wechat_django
  2. 执行上述2-4

更新

  1. 运行pip install -U wechat-django
  2. 运行python manage.py migrate wechat_django 来更新数据库结构

配置

一般而言,默认配置足以满足需求

参数名 默认值 说明
WECHAT_ADMINSITE "django.contrib.admin.site" 需要注册微信后台的AdminSite对象字符串
WECHAT_SESSIONSTORAGE "django.core.cache.cache" 存储微信accesstoken等使用的Storage对象字符串,或一个接收 wechat_django.models.WeChatApp 对象并返回 wechatpy.session.SessionStorage 对象的callable或指向该callable的字符串
WECHAT_WECHATCLIENTFACTORY "wechat_django.utils.wechat.get_wechat_client" 接受一个 wechat_django.models.WeChatApp 对象并返回指向一个 wechat_django.wechat.WeChatClient 子类的字符串,当默认的WeChatClient不能满足需求时,可通过修改WeChatClient生成工厂来定制自己的WeChatClient类,比如说某个公众号获取accesstoken的方式比较特殊,可以通过继承WeChatClient并复写fetch_access_token方法来实现
WECHAT_MESSAGETIMEOFFSET 180 微信请求消息时,timestamp与服务器时间差超过该值的请求将被抛弃
WECHAT_MESSAGENOREPEATNONCE True 是否对微信消息防重放检查 默认检查

日志

logger 说明
wechat.admin.{appname} admin异常日志 最低级别warning
wechat.api.{appname} api日志 最低级别debug
wechat.handler.{appname} 消息处理日志 最低级别debug
wechat.oauth.{appname} 网页授权异常日志 最低级别warning
wechat.views.{appname} view异常日志(如素材代理) 最低级别warning

注意事项

  • 框架默认采用django的cache管理accesstoken,如果有多个进程,或是多台机器部署,请确保所有worker使用公用cache以免造成token争用,如果希望不使用django的cache管理accesstoken,可以在配置项中定义SessionStorage
  • 请确保在https环境下部署,否则有secretkey泄露的风险

部分功能使用说明

网页授权

可通过wechat_django.oauth.wechat_auth装饰器进行网页授权,授权后,request将被附上一个名为wechat的wechat_django.oauth.WeChatOAuthInfo 对象,可通过 request.wechat.user 拿到wechat_django.models.WeChatUser实例,通过 request.wechat.app 拿到wechat_django.models.WeChatApp实例,以下是一个基本示例

from wechat_django.oauth import wechat_auth

@wechat_auth("your_app_name")
def your_view(request, *args, **kwargs):
    """:type request: wechat_django.models.request.WeChatOAuthRequest"""
    user = request.wechat.user

对于默认重定向行为不满意的,可以自定义response,具体的参数说明参见wechat_django.oauth.wechat_auth装饰器的docstring

主动调用微信api

from wechat_django.models import WeChatApp
app = WeChatApp.get_by_name("your app name")
data = app.client.user.get_followers()

具体client的使用方式,请移步wechatpy文档

自定义微信回复

在后台配置自定义回复,填写自定义回复处理代码的路径,代码须由 wechat_django.decorators.message_handler 装饰对应的方法接收一个 wechat_django.models.WeChatMessageInfo 对象,返回字符串或一个 wechatpy.replies.BaseReply 对象

from wechat_django.decorators import message_handler

@message_handler
def custom_business(message):
    """
    :type message: wechat_django.models.WeChatMessageInfo
    """
    user = message.user
    msg = message.message
    text = "hello, {0}! we received a {1} message.".format(
        user, msg.type)
    return TextReply(content=text.encode())

后台使用简介

参见管理后台使用简介 文档

示例项目

可参考本项目sample文件夹

TODOS:

  • 完善单元测试
  • app层面的message log和reply log
  • 后台表单验证
  • 后台确认页

计划的功能

  • accesstoken开放给第三方并对接第三方accesstoken
  • 用户分组管理
  • 消息响应日志/对话
  • 客服消息
  • 清理及保护永久素材
  • 将部分actions改为object-tool
  • 回复及一些查询缓存
  • 菜单导入导出

已知bug

ChangeLog

0.1.0

  • 公众号管理及基本用法封装
  • 用户,自动回复,菜单,永久素材,图文的基本管理
  • 微信网页授权
  • 后台权限

Xavier-Lam@NetDragon

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wechat-django-0.1.0.tar.gz (65.0 kB view details)

Uploaded Source

Built Distribution

wechat_django-0.1.0-py2.py3-none-any.whl (93.7 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file wechat-django-0.1.0.tar.gz.

File metadata

  • Download URL: wechat-django-0.1.0.tar.gz
  • Upload date:
  • Size: 65.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.4.4

File hashes

Hashes for wechat-django-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0525c026d784c0eae36d8cf745cb74daeb2b6f345000b7624da5c6e65b029b55
MD5 79e34f182f194cd32aeb1d3077866691
BLAKE2b-256 d3e259b44290193a27c6bf99e8e15ec38fdb4b9fab58cace3439f19776c9e5d5

See more details on using hashes here.

File details

Details for the file wechat_django-0.1.0-py2.py3-none-any.whl.

File metadata

  • Download URL: wechat_django-0.1.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 93.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.4.4

File hashes

Hashes for wechat_django-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 718c09e6e3631329700ff6fe5aad14205ce49230e0b923eb04378753c51b2319
MD5 7d8894b87f0da1f6d45855a19126bea9
BLAKE2b-256 31f4b23bc82f9346f0ed5c938668682ad4199283648c4e663019775fe1248a3d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page