利用django+wechat-python-sdk 創(chuàng)建微信服務(wù)器接入的方法
1、版本說(shuō)明 :python 2.7.10, Django (1.6.11.6),centos7
2、步驟說(shuō)明:
A、django 建立項(xiàng)目
django-admin.py startproject projtest
之后啟動(dòng)服務(wù)器,看看是否正確:
cd projtest
配置 projtest子目錄下面的setting.py文件,允許外部機(jī)器訪問(wèn)
[root@VM_4_128_centos projtest]# vim projtest/settings.py
把其中ALLOWED_HOSTS改成如下
ALLOWED_HOSTS = ['*']
然后啟動(dòng),外部機(jī)器 看看能否訪問(wèn)到:
# python manage.py runserver 0.0.0.0:80

B、創(chuàng)建應(yīng) 用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文件,加入應(yīng)用
目錄結(jié)構(gòu)如下:
|-- 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', )
注:應(yīng)用名稱后面要有逗號(hào)
E、在wechat目錄下,重寫(xiě)views.py文件,代碼如下(參考網(wǎng)上例子):
#!/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):
#這里我當(dāng)時(shí)寫(xiě)成了防止跨站請(qǐng)求偽造,其實(shí)不是這樣的,恰恰相反。因?yàn)閐jango默認(rèn)是開(kāi)啟了csrf防護(hù)中間件的
#所以這里使用@csrf_exempt是單獨(dú)為這個(gè)函數(shù)去掉這個(gè)防護(hù)功能。
@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 ,添加映射到微信應(yīng)用(類似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、微信提交配置通過(guò)
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 創(chuàng)建微信服務(wù)器接入的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用python找出list列表中相同元素(指定元素)的所有索引
這篇文章主要給大家介紹了關(guān)于使用python找出list列表中相同元素(指定元素)的所有索引,在平時(shí)開(kāi)發(fā)過(guò)程中經(jīng)常遇到需要在數(shù)據(jù)中獲取特定的元素索引的信息,需要的朋友可以參考下2023-08-08
跟老齊學(xué)Python之用while來(lái)循環(huán)
while,翻譯成中文是“當(dāng)...的時(shí)候”,這個(gè)單詞在英語(yǔ)中,常常用來(lái)做為時(shí)間狀語(yǔ),while ... someone do somthing,這種類型的說(shuō)法是有的。2014-10-10
Python實(shí)現(xiàn)的爬取小說(shuō)爬蟲(chóng)功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的爬取小說(shuō)爬蟲(chóng)功能,結(jié)合實(shí)例形式分析了Python爬取頂點(diǎn)小說(shuō)站上的小說(shuō)爬蟲(chóng)功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-03-03
python3使用python-redis-lock解決并發(fā)計(jì)算問(wèn)題
本文主要介紹了python3使用python-redis-lock解決并發(fā)計(jì)算問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Kmeans均值聚類算法原理以及Python如何實(shí)現(xiàn)
這個(gè)算法中文名為k均值聚類算法,首先我們?cè)诙S的特殊條件下討論其實(shí)現(xiàn)的過(guò)程,方便大家理解。2020-09-09

