利用django+wechat-python-sdk 创建微信服务器接入的方法


Posted in Python onFebruary 20, 2019

1、版本说明 :python 2.7.10, Django (1.6.11.6),centos7

2、步骤说明:

A、django 建立项目

django-admin.py startproject projtest

之后启动服务器,看看是否正确:

cd projtest

配置 projtest子目录下面的setting.py文件,允许外部机器访问

[root@VM_4_128_centos projtest]# vim projtest/settings.py

把其中ALLOWED_HOSTS改成如下

ALLOWED_HOSTS = ['*']

然后启动,外部机器 看看能否访问到:

# python manage.py runserver 0.0.0.0:80

利用django+wechat-python-sdk 创建微信服务器接入的方法

B、创建应 用wechat

[root@VM_4_128_centos projtest]# python manage.py startapp wechat
 [root@VM_4_128_centos projtest]# ls
 manage.py projtest wetchat

C、安装wechat_sdk

[root@VM_4_128_centos projtest]# pip install wechat-sdk
Requirement already satisfied: wechat-sdk in /usr/lib/python2.7/site-packages
Requirement already satisfied: six==1.10.0 in /usr/lib/python2.7/site-packages (from wechat-sdk)
Requirement already satisfied: requests==2.6.0 in /usr/lib/python2.7/site-packages (from wechat-sdk)
Requirement already satisfied: pycrypto==2.6.1 in /usr/lib64/python2.7/site-packages (from wechat-sdk)
Requirement already satisfied: xmltodict==0.9.2 in /usr/lib/python2.7/site-packages (from wechat-sdk)

D、修改projtest/projtest/setting.py文件,加入应用

目录结构如下:

|-- manage.py
|-- projtest
|  |-- __init__.py
|  |-- __init__.pyc
|  |-- settings.py
|  |-- settings.pyc
|  |-- urls.py
|  |-- urls.pyc
|  |-- wsgi.py
|  `-- wsgi.pyc
`-- wetchat
  |-- __init__.py
  |-- admin.py
  |-- models.py
  |-- tests.py
  `-- views.py

vim projtest/settings.py

`-- wetchatINSTALLED_APPS = (
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'wechat',
)

注:应用名称后面要有逗号

E、在wechat目录下,重写views.py文件,代码如下(参考网上例子):

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Create your views here.
from django.shortcuts import render
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from django.views.generic.base import View
from django.template import loader, Context
 
from wechat_sdk import WechatBasic
token = 'zwbswx'
 
class WeChat(View):
 #这里我当时写成了防止跨站请求伪造,其实不是这样的,恰恰相反。因为django默认是开启了csrf防护中间件的
 #所以这里使用@csrf_exempt是单独为这个函数去掉这个防护功能。
 @csrf_exempt
 def dispatch(self, *args, **kwargs):
  return super(WeChat, self).dispatch(*args, **kwargs)
  
 def get(self, request):
  wechat = WechatBasic(token=token)
  if wechat.check_signature(signature=request.GET['signature'],
               timestamp=request.GET['timestamp'],
               nonce=request.GET['nonce']):
    if request.method == 'GET':
      rsp = request.GET.get('echostr', 'error')
    else:
      wechat.parse_data(request.body)
      message = wechat.get_message()
      rsp = wechat.response_text(u'消息类型: {}'.format(message.type))
  else:
    rsp = wechat.response_text('check error')
  return HttpResponse(rsp)

F、修改projtest/projtest/urls.py ,添加映射到微信应用(类似servlet)

[root@VM_4_128_centos projtest]# vim projtest/urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
from wechat import views as wt_views ##增加本行
admin.autodiscover()
 
urlpatterns = patterns('',
  # Examples:
  # url(r'^$', 'projtest.views.home', name='home'),
  # url(r'^blog/', include('blog.urls')),
 
  url(r'^admin/', include(admin.site.urls)),
  url(r'^wechat', wt_views.WeChat.as_view()), ##增加本行
 
)

)

G、微信提交配置通过

05/Jun/2017 03:31:01] "GET /wechat?signature=8a75afb21cf821bbc4e2535119aa05be5c987112&echostr=13869464754252084605×tamp=1496633461&nonce=3957453572 HTTP/1.0" 301 0

[05/Jun/2017 03:31:01] "GET /wechat/?signature=8a75afb21cf821bbc4e2535119aa05be5c987112&echostr=13869464754252084605×tamp=1496633461&nonce=3957453572 HTTP/1.0" 200 20

以上这篇利用django+wechat-python-sdk 创建微信服务器接入的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pandas or sql计算前后两行数据间的增值方法
Apr 20 Python
Python实现输出某区间范围内全部素数的方法
May 02 Python
Python实现求解一元二次方程的方法示例
Jun 20 Python
基于Python实现定时自动给微信好友发送天气预报
Oct 25 Python
Python List列表对象内置方法实例详解
Oct 22 Python
关于Python中定制类的比较运算实例
Dec 19 Python
NumPy统计函数的实现方法
Jan 21 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
Jan 28 Python
python range实例用法分享
Feb 06 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
python中的列表和元组区别分析
Dec 30 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
Feb 07 Python
python3+pyqt5+itchat微信定时发送消息的方法
Feb 20 #Python
钉钉群自定义机器人消息Python封装的实例
Feb 20 #Python
python3实现zabbix告警推送钉钉的示例
Feb 20 #Python
python实现图书借阅系统
Feb 20 #Python
python 调用钉钉机器人的方法
Feb 20 #Python
python钉钉机器人运维脚本监控实例
Feb 20 #Python
Python实现钉钉发送报警消息的方法
Feb 20 #Python
You might like
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
php中文验证码实现示例分享
2014/01/12 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
HR vs CL BO3 第一场 2.13
2021/03/10 DOTA
JS Date函数整理方便使用
2013/10/23 Javascript
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
如何用python整理附件
2018/05/13 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
Python的pygame安装教程详解
2020/02/10 Python
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
护士检查书
2014/01/17 职场文书
KTV的创业计划书范文
2014/02/02 职场文书
民族团结先进个人材料
2014/02/05 职场文书
合作意向书范本
2019/04/17 职场文书
python pygame入门教程
2021/06/01 Python
redis数据一致性的实现示例
2022/03/18 Redis