Django 위 챗 공식 플랫폼 구축 상세 설명 1

위 챗 공식 플랫폼 공식 매 뉴 얼:http://mp.weixin.qq.com/wiki/home/index.html
파 이 썬 버 전: 2.7.10
Django 버 전: 1.5
개발 플랫폼: 시 나 닷 컴 SAE
전제: django 기본 생 성 응용 절 차 를 이해 합 니 다.위 챗 공식 플랫폼 의 공식 매 뉴 얼 에 따라 한 걸음 한 걸음 완성 된다.
오늘 했 어 요?
나 는 이 위 챗 기능 을 예전 에 SAE 에서 django 로 만 든 블 로그 에 추가 했다.
위 챗 공공 개발 자 문서 의 첫 번 째 단계: 접속
http://mp.weixin.qq.com/wiki/16/1e87586a83e0e121cc3e808014375b74.html
1. wechat 모듈 을 직접 추가:
python manage.py startapp wechat
2. settings. py 파일 에 INSTALLAPPS 에 'wechat' 를 추가 합 니 다. 뒤에 쉼표 가 있 는 것 을 잊 지 마 세 요.
3. settings. py 와 같은 등급 의 디 렉 터 리 에 있 는 urls. py 에 추가:
url (r '^ wechat /', include ('wechat. urls'), \ # 여기 도 뒤에 쉼표 붙 이 는 거 잊 지 마 세 요.
4. 현재 wechat 디 렉 터 리 에 들 어가 urls. py 를 만 들 고 다음 과 같은 내용 을 추가 합 니 다.
from django.conf.urls import patterns, include, url
from .views import WeChat

urlpatterns = patterns('',
  url(r'^$', WeChat.as_view()),
)

이 안 주의: 위 챗 은 우리 가 views. py 에서 만 들 고자 하 는 자신의 클래스 입 니 다.제 가 url 에서 WeChat. as 를 사 용 했 거 든 요.view (), 그래서 저 는 django 의 보기 류 를 사용 하여 완성 하려 고 합 니 다.물론 위 챗 을 보기 함수 로 정의 할 수 있 습 니 다. 즉, 이와 같은 쓰기 입 니 다.
from django.conf.urls import patterns, include, url
from .views import WeChat

urlpatterns = patterns('',
  url(r'^$', WeChat),
)

여기 서 저 는 사실 보기 류 를 사용 하여 완성 할 때 문제 가 생 겼 습 니 다. 저도 python 과 django 를 처음 배 웠 기 때 문 입 니 다.이 문 제 는 뒤에 언급 될 것 이다.
이제 우 리 는 views. py 에 가서 우리 의 WeChat 를 완성 할 수 있 습 니 다. 그것 을 보기 류 로 실현 하 든 보기 함수 로 실현 하 든.
5. wechat 디 렉 터 리 의 views. py 에 다음 과 같은 내용 을 추가 합 니 다.
# -*- coding: utf-8 -*-
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 xml.etree import ElementTree as ET
import time
import hashlib

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):
  
    #            ,             
    signature = request.GET.get('signature', None)
    timestamp = request.GET.get('timestamp', None)
    nonce = request.GET.get('nonce', None)
    echostr = request.GET.get('echostr', None)
    
    #  token         ,              Token   
    token = '   token      ,                '
    
    # token,timestamp, nonce       ,       
    hashlist = [token, timestamp, nonce]
    hashlist.sort()
    
    #             
    hashstr = ''.join([s for s in hashlist])
    
    #  python     sha1    ,        ,       。
    hashstr = hashlib.sha1(hashstr).hexdigest()
    
    #                         ,
    #    ,         echostr      
    if hashstr == signature:
      return HttpResponse(echostr)

지금 제 가 앞에서 말씀 드 린 문제 하 나 를 말씀 드 리 려 고 합 니 다. 저 는 보기 류 를 사 용 했 습 니 다. 그리고 안에 get 방법 을 정 의 했 습 니 다. 잠시 후에 post 방법 도 정의 할 것 입 니 다. 여기 있 는 @ csrf 에 주의 하 세 요.exempt 이 장식 기 는 dispatch 위 에 놓 았 습 니 다. 그러나 처음에 저 는 get 과 post 방법 에 각각 놓 았 습 니 다. 그래서 저 는 사용자 의 텍스트 정 보 를 받 고 텍스트 메 시 지 를 사용자 에 게 되 돌려 주 었 습 니 다. '이 공중 번 호 는 잠시 서 비 스 를 제공 할 수 없 으 니 잠시 후에 다시 시도 하 십시오' 라 는 문제 가 발생 했 습 니 다.나중에 인터넷 에서 오랫동안 해결 방법 을 찾 았 는데 마침내 한 형제 도 만 나 서 해결 했다. 바로 @ csrf 를exempt 는 dispatch 위 에 놓 습 니 다. django 는 보기 류 를 사용 할 때 dispatch 라 는 방법 으로 먼저 할당 되 기 때 문 입 니 다.보기 류 를 사용 하지 않 고 wechat 방법 만 정의 했다 면 @ csrfexemt 는 당신 의 wechat 방법 위 에 올 려 놓 으 면 됩 니 다. 물론 이곳 의 wechat 는 제 가 지은 이름 일 뿐 입 니 다. 당신 은 당신 이 지은 이름 을 완성 할 수 있 습 니 다. urls. py 에서 사용 하 는 것 과 같 으 면 됩 니 다.
다음은 위 챗 공식 플랫폼 - > 개발 자 센터 에서 어떻게 설정 하 는 지 알려 드 리 겠 습 니 다.
1. URL:
나의 SAE 의 주 소 는:http://nowtodo.sinaapp.com
그리고 제 가 django 에서 wechat 에 설정 한 url 맵 관 계 는 url (r '^ wechat /', include ('wechat. urls') 입 니 다.
그래서 제 SAE 주소 에 / wechat / 를 추가 합 니 다. 제 가 작성 한 URL 은:
http://nowtodo.sinaapp.com/wechat/
2. Token
Token 은 우리 get 방법 에서 설정 한 것 입 니 다:
token = '   token      ,                '

문서 의 알림: 영어 나 숫자 여야 합 니 다. 길 이 는 3 - 32 문자 입 니 다.
3. EncodingAESKey
이 값 은 상관 하지 않 아 도 됩 니 다. 물론 '랜 덤 생 성' 을 누 르 면 다시 생 성 될 수 있 습 니 다.
4. 메시지 복호화 방식
이 메시지 암호 화 방식: 저 는 명문 모드 를 사용 합 니 다.
이제 설정 이 완료 되면 '제출' 을 누 르 면 인증 이 완 료 될 것 입 니 다.
Django搭建微信公众平台详解 一

좋은 웹페이지 즐겨찾기