利用django+wechat-python-sdk 创建微信服务器接入的方法
作者:zwbill 发布时间:2023-06-04 21:28:55
标签:django,python,微信,服务器
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
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
来源:https://blog.csdn.net/zwbill/article/details/72864000
0
投稿
猜你喜欢
- 迷宫问题问题描述:迷宫可用方阵 [m, n] 表示,0 表示可通过,1 表示不能通过。若要求左上角 (0, 0) 进入,设计算法寻求一条能从
- 本文实例为大家分享了js轮播图实现代码,供大家参考,具体内容如下思路:1、首先要有个盛放图片的容器,设置为单幅图片的宽高,且overflow
- 前两天特意装了一下IETester,用以方便测试,装好后使用发现IE8有两个地方需要大家注意。IE5MAC的过滤器对IE8 Beta 1版同
- 多表查询1. 增删改一对多:先一后多,外键可以为对象或依赖表的主键(publish and book)publish = Publish.o
- 很久没有上过天极网,今天偶然兴起跑上去看了一下,看到消息说天极网深圳站隆重上线,于是也顺便去溜了一把,打开页面的时候差点有种不知所措的感觉,
- 还记得曾经被“滑稽”刷屏的场景吗?在这个各种表情包横行的时代,emoji表情还能依然占据一定的地位!这篇文章将带你了解一下,python与e
- 在上一篇Python接口自动化测试系列文章:Python接口自动化浅析unittest单元测试原理,主要介绍单元测试,unittest模块特
- 本文实例为大家分享了python实现大转盘抽奖的具体代码,供大家参考,具体内容如下选择转盘中的某一个方框,来进行抽奖import tkint
- 1. 序列__getitem__如果没有 __iter__ 和 __contains__ 方法,Python 会调用 __getitem__
- 一:关于MySQL5 MySQL5系列数据库是MySQL的最新版本的数据库,比较流行的发行版是mysql-5.0.18。MySQL 英文官方
- 在matplotlib下,一个Figure对象可以包含多个子图(Axes),可以使用subplot()快速绘制,其调用形式如下:subplo
- 以下函数采用FSO对象,文件位置在FSO.ASP。FSO对象的文件编码属性只有三种,系统默认,Unicode,ASCII,并没有我们要的ut
- 访问phpmyadmin时总是出现 “无法载入 mysql 扩展,请检查 PHP 配置”。
- 目录模块与包__import__模块缓存imp 与 importlib 模块惰性导入总结参考资料本文不讨论 Python 的导入机制(底层实
- ftp登陆连接from ftplib import FTP #加载ftp模块ftp=FTP() &n
- 兄弟组件之间的通信同样是在项目中经常会遇到的组件间的通信问题之一, 这种问题的最根本方法就是: 把兄弟组件内部的变量提升到一个中央仓库。借助
- 为什么要讲 __repr__在 Python 中,直接 print 一个实例对象,默认是输出这个对象由哪个类创建的对象,以及在内存中的地址(
- 在web运行中很重要的一个功能就是加载静态文件,在django中可能已经给我们设置好了,我们只要直接把模板文件放在templates就好了,
- 这篇文章主要介绍了PYTHON发送邮件YAGMAIL的简单实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- tkinter的锚点(anchor)问题tkinter中anchor参数(注意,参数的英文都是小写)字母方位n北s南w西e东center中心