利用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 相关文章推荐
python实现计算资源图标crc值的方法
Oct 05 Python
Linux下编译安装MySQL-Python教程
Feb 02 Python
Python的Bottle框架的一些使用技巧介绍
Apr 08 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
Python构建网页爬虫原理分析
Dec 19 Python
python脚本生成caffe train_list.txt的方法
Apr 27 Python
Python爬虫使用脚本登录Github并查看信息
Jul 16 Python
python简单操作excle的方法
Sep 12 Python
Python3.5实现的罗马数字转换成整数功能示例
Feb 25 Python
关于Pytorch的MNIST数据集的预处理详解
Jan 10 Python
实例讲解Python 迭代器与生成器
Jul 08 Python
如何利用Python matplotlib绘制雷达图
Dec 21 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
第九节 绑定 [9]
2006/10/09 PHP
20个PHP常用类库小结
2011/09/11 PHP
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
js实现键盘控制DIV移动的方法
2015/01/10 Javascript
js获取页面description的方法
2015/05/21 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
jquery实现九宫格大转盘抽奖
2015/11/13 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
详解angularjs 关于ui-router分层使用
2017/06/12 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
小程序两种滚动公告栏的实现方法
2019/09/17 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
python中的for循环
2018/09/28 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
银行类自荐信
2014/02/04 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
计算机软件专业求职信
2014/06/10 职场文书
党的群众路线教育实践活动对照检查材料(个人)
2014/09/24 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
小学校长开学致辞
2015/07/29 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书