利用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判断字符串是否纯数字的方法
Nov 19 Python
Python中给List添加元素的4种方法分享
Nov 28 Python
python读取word文档的方法
May 09 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
Python 串口读写的实现方法
Jun 12 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
Jul 28 Python
python队列原理及实现方法示例
Nov 27 Python
python scatter函数用法实例详解
Feb 11 Python
python实现将range()函数生成的数字存储在一个列表中
Apr 02 Python
Python selenium使用autoIT上传附件过程详解
May 26 Python
Python利用FlashText算法实现替换字符串
Mar 31 Python
Github 使用python对copilot做些简单使用测试
Apr 14 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文本操作类
2006/11/25 PHP
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
PHP常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
js中作用域的实例解析
2017/03/16 Javascript
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
javascript实现倒计时提示框
2021/03/02 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
python中的多重继承实例讲解
2014/09/28 Python
详解Python装饰器由浅入深
2016/12/09 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
python 连续不等式语法糖实例
2020/04/15 Python
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
商务英语专业自荐信
2013/10/14 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
学习雷锋活动总结
2014/04/29 职场文书
门面房租房协议书
2014/08/20 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
婚前财产协议书范本
2014/10/19 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
暑假安全保证书
2015/02/28 职场文书
小平小道观后感
2015/06/09 职场文书