利用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之编写简单简单连接数据库并执行查询操作
Feb 27 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
Python常见的pandas用法demo示例
Mar 16 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
Mar 27 Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
Oct 25 Python
Python3监控疫情的完整代码
Feb 20 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
详解python 条件语句和while循环的实例代码
Dec 28 Python
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
Apr 27 Python
关于pytest结合csv模块实现csv格式的数据驱动问题
May 30 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
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
2013/06/24 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
Symfony2学习笔记之模板用法详解
2016/03/17 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
node.js学习总结之调式代码的方法
2014/06/25 Javascript
javascript实现表格排序 编辑 拖拽 缩放
2015/01/02 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
简单的分页代码js实现
2016/05/17 Javascript
Angular的$http与$location
2016/12/26 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
js实现随机点名功能
2020/12/23 Javascript
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
使用Python下载Bing图片(代码)
2013/11/07 Python
python中range()与xrange()用法分析
2016/09/21 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
Python读取YAML文件过程详解
2019/12/30 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
小学学雷锋活动总结
2014/04/25 职场文书
个人安全生产承诺书
2014/05/22 职场文书
社区服务标语
2014/07/01 职场文书
秋季运动会演讲稿
2014/09/16 职场文书
大学生自荐书范文
2015/03/05 职场文书
公司食堂管理制度
2015/08/05 职场文书