利用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 多线程应用介绍
Dec 19 Python
vscode 远程调试python的方法
Dec 01 Python
Python实现动态图解析、合成与倒放
Jan 18 Python
Python 多维List创建的问题小结
Jan 18 Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 Python
pycharm安装及如何导入numpy
Apr 03 Python
django ORM之values和annotate使用详解
May 19 Python
Python使用socketServer包搭建简易服务器过程详解
Jun 12 Python
keras:model.compile损失函数的用法
Jul 01 Python
python的dict判断key是否存在的方法
Dec 09 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
Jan 28 Python
如何在向量化NumPy数组上进行移动窗口
May 18 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知道与问问的采集插件代码
2010/10/12 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
一个实用的图片切换支持点击切换和自动轮播
2014/09/09 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
Python字符串和字典相关操作的实例详解
2017/09/23 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
python基础梳理(一)(推荐)
2019/04/06 Python
python socket 聊天室实例代码详解
2019/11/14 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
《鹬蚌相争》教学反思
2014/04/22 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
民用住房租房协议书
2014/10/29 职场文书
2014教师年度工作总结
2014/11/10 职场文书
研究生导师推荐信
2015/03/25 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书