利用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中那些 Pythonic的写法详解
Jul 02 Python
Python使用type关键字创建类步骤详解
Jul 23 Python
python openCV获取人脸部分并存储功能
Aug 28 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
Django实现分页显示效果
Oct 31 Python
Python实现socket非阻塞通讯功能示例
Nov 06 Python
TensorFlow tf.nn.max_pool实现池化操作方式
Jan 04 Python
python 将dicom图片转换成jpg图片的实例
Jan 13 Python
基于Django signals 信号作用及用法详解
Mar 28 Python
利用Python自动化操作AutoCAD的实现
Apr 01 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
May 20 Python
Python模块zipfile原理及使用方法详解
Aug 04 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
无线电的诞生过程
2021/03/01 无线电
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
JavaScript Prototype对象
2009/01/07 Javascript
jQuery 使用手册(七)
2009/09/23 Javascript
jquery 学习之二 属性(类)
2010/11/25 Javascript
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
vue如何从接口请求数据
2017/06/22 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
[02:25]DOTA2英雄基础教程 虚空假面
2014/01/02 DOTA
详解Python的Django框架中的templates设置
2015/05/11 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
pandas 空数据处理方法详解
2019/11/02 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
html5跨域通讯之postMessage的用法总结
2013/11/07 HTML / CSS
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
苹果香港官方商城:Apple香港
2016/09/14 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
学校万圣节活动方案
2014/02/13 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
幼儿园小班开学寄语(2016秋季)
2015/12/03 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python