利用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函数帮助查询小工具
Mar 13 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
Python中的pygal安装和绘制直方图代码分享
Dec 08 Python
Python文件操作基本流程代码实例
Dec 11 Python
Python中利用aiohttp制作异步爬虫及简单应用
Nov 29 Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 Python
简单了解Python3里的一些新特性
Jul 13 Python
python如何实现复制目录到指定目录
Feb 13 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
Python中三维坐标空间绘制的实现
Sep 22 Python
改变 Python 中线程执行顺序的方法
Sep 24 Python
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
Apr 03 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
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
php动态绑定变量的用法
2015/06/16 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
Ext.MessageBox工具类简介
2009/12/10 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
js实现打字小游戏
2019/12/17 Javascript
详细介绍Python语言中的按位运算符
2013/11/26 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
django url到views参数传递的实例
2019/07/19 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
Python装饰器结合递归原理解析
2020/07/02 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
党支部承诺书范文
2014/03/28 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
电台编导求职信
2014/05/06 职场文书
社区党建工作方案
2014/06/10 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
边城读书笔记
2015/06/29 职场文书
2016三严三实专题教育活动心得体会
2016/01/06 职场文书
Mysql Show Profile
2021/04/05 MySQL
如何解决php-fpm启动不了问题
2021/11/17 PHP
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL