利用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异常处理慎用“except:pass”建议
Apr 02 Python
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
利用python库在局域网内传输文件的方法
Jun 04 Python
根据DataFrame某一列的值来选择具体的某一行方法
Jul 03 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
Feb 19 Python
Python matplotlib画图与中文设置操作实例分析
Apr 23 Python
python3通过selenium爬虫获取到dj商品的实例代码
Apr 25 Python
python 实现字符串下标的输出功能
Feb 13 Python
python轮询机制控制led实例
May 03 Python
在CentOS7下安装Python3教程解析
Jul 09 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的远程多会话调试
2017/09/21 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
jquery 学习笔记一
2010/04/07 Javascript
改善用户体验的五款jQuery插件分享
2011/05/22 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
vue.js中父组件调用子组件的内部方法示例
2017/10/22 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
vue element 生成无线级左侧菜单的实现代码
2019/08/21 Javascript
[02:20]2014DOTA2西雅图邀请赛 MVP外卡赛首胜采访
2014/07/09 DOTA
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
python list中append()与extend()用法分享
2013/03/24 Python
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
简单介绍Ruby中的CGI编程
2015/04/10 Python
在Python中移动目录结构的方法
2016/01/31 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
美国NBA官方商店:NBA Store
2019/04/12 全球购物
大学生优秀自荐信范文
2014/02/25 职场文书
社区道德讲堂实施方案
2014/03/21 职场文书
战友聚会策划方案
2014/06/13 职场文书
广播体操口号
2014/06/18 职场文书
模具专业求职信
2014/06/26 职场文书
干部考察材料范文
2014/12/24 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
春晚观后感
2015/06/11 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
学生早退检讨书(范文)
2019/08/19 职场文书
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python