ƵµÀÀ¸Ä¿
Ê×Ò³ > ΢ÐÅѧԺ > ΢ÐŹ«ÖÚÆ½Ì¨¿ª·¢ > ÕýÎÄ
»ùÓÚDjangoµÄ΢ÐŹ«Öںſª·¢Ö®ÊµÏÖÏûÏ¢µÄ½ÓÊÕÓë·¢ËÍ
2019-12-08 10:32:55         À´Ô´£ºyuuuuchangµÄ²©¿Í  
Êղؠ  ÎÒҪͶ¸å

»ùÓÚDjangoµÄ΢ÐŹ«Öںſª·¢Ö®ÊµÏÖÏûÏ¢µÄ½ÓÊÕÓë·¢ËÍ

×¼±¸¹¤×÷

ÔÚÕýʽ¿ªÊ¼Ö®Ç°,ÐèÒª×öһЩ׼±¸:

a: °²×°ºÃwechat_sdk;

b: ³É¹¦Í¨¹ýÁË΢ÐŹ«ÖںŵĿª·¢ÕßÈÏÖ¤;

c: н¨Ò»¸öÓ¦ÓÃ(²»ÊDZØÐëµÄ), ÎÒн¨ÁËÒ»¸ödictÓ¦ÓÃ.

ÐèҪעÒâµÄÊÂÏî

ÔÚÕýʽ¶¯ÊÖ֮ǰ,Ê×ÏÈÎÒҪ˵һÏÂҪעÒâµÄÊÂ(ÎҲȹýµÄ¿Ó):

a: ΢ÐŹ«ÖںŷþÎñÆ÷ÔÚÊÕµ½Óû§ÔÚ¹«ÖÚºÅÊäÈëµÄÐÅÏ¢Ö®ºó, Ö»»áת·¢µ½Ò»¸öurlÉÏ(¾ÍÊÇÄ㿪·¢ÕßÈÏ֤ʱËùÌîµÄÄǸöurl,ËùÒÔÖ»ÄÜͨ¹ýÕâ¸öurlÀ´½ÓÊÕÐÅÏ¢)

b: ¹«ÖÚºÅÊÕµ½Óû§µÄÐÅÏ¢Ö®ºó, ½«»á°ÑËü´ò°ü³É¹æ¶¨µÄxmlµÄģʽͨ¹ýÄã×¢²áµÄurl·¢Ë͵½ÄãµÄ·þÎñÆ÷ÉÏ, Äã·¢Ë͸øÓû§µÄÏûϢͬÑùÒª°ü×°³ÉͬÑù¸ñʽµÄxml²ÅÄܳɹ¦, ·ñÔò¹«Öںŷþ ÎñÆ÷Ò»Âɾܾø²¢ÔÚÓû§¶Ë·µ»Ø"¸Ã¹«ÖÚºÅÌṩµÄ·þÎñ³öÏÖ¹ÊÕÏ, ÇëÉÔºóÔÙÊÔ"µÄÌáʾ(ÐÒÔ˵ÄÊÇÔÚwechat_sdkÒѾ­Óдò°üÕâÖÖxmlµÄ·½·¨ÁË, Èç¹ûÄãÏëÁ˽â, Äã¿ÉÒÔ¿´¿´¹«ÖںŵĿª·¢Îĵµ)

c: ·µ»Ø¸øÓû§µÄÎÄ×ÖÒ»¶¨ÒªÓÃutf-8¸ñʽ

d: ÿ´Î·¢Ë͵ÄÏûÏ¢³¤¶È³¤¶È²»Äܳ¬¹ý2048×Ö½Ú, ÓÉÓÚ²ÉÓÃutf-8±àÂë, ËùÒÔÇëÁôÒâÿ¸öºº×Ö¶¼Ëã×÷3¸ö×Ö½Ú, ³¬³¤¾ÍÒª¼ÇµÃ½Ø¶Ï·¢Á½´ÎÁË

µ÷ÊÔ¼¼ÇÉ

ÎÞÂÛÄãµÄ·þÎñÆ÷ÔÚµ÷ÊÔ¹ý³ÌÖгöÁËʲô´í, ÔÚÓû§¶Ë¶¼ÊÇÌáʾ"¸Ã¹«ÖÚºÅÌṩµÄ·þÎñ³öÏÖ¹ÊÕÏ, ÇëÉÔºóÔÙÊÔ"µÄÌáʾ, ËùÒÔÏëÖ»¿¿Ò»¸ö²âÊÔÕ˺ÅÀ´µ÷ÊÔÃ÷ÏÔÊǺܲ»¿¿Æ×µÄ. ÔÚ¹«Ö򼁮½Ì¨ÉÏÓÐÒ»¸öµ÷ÊÔ ¹¤¾ß, µ«ÊÇËûÒ²Ö»»á·µ»Ø·ÃÎʵĴíÎó´úÂë(200/500Ö®ÀàµÄ), ²¢Ã»Óиø³öÌáʾ, ͬÑùÒ²ÊǺܲ»¿¿Æ×, ÄÇôÎÒÃǸÃÔõôÑùÖªµÀÎҵķþÎñÆ÷¸ú΢ÐÅ·¢ËÍÏûÏ¢Õⲿ·Ö³öÁËʲôÎÊÌâÄØ?

ÎÒÔÚ¿ª·¢¹ý³ÌÖз¢ÏÖÁËÒ»¸ö¼¼ÇÉ, ÎÒÃǵķþÎñÆ÷´Ó¹«ÖںŷþÎñÆ÷½ÓÊÕÁËÒ»¸ö°üº¬xml¸ñʽµÄ°ü, ²¢ÇÒ¿ªÊ¼¶ÁÈ¡´¦Àí, ×îºó°Ñ´¦Àí½á¹û(·µ»Ø¸øÓû§µÄÎÄ×Ö)´ò°ü³Éxml°ü·¢Ë͸ø¹«ÖںŷþÎñÆ÷. Ô­ÀíÊÇÕâÑù×Ó. ÄÇôÎÒÃÇֻҪαÔìÒ»¸öÓû§·¢ËÍÐÅÏ¢µÄxml¶Î, ±£´æÔÚÒ»¸öxmlÎļþÀïÃæ, ÐèÒªÓõÄʱºò¾Í¶ÁÈ¡Õâ¸öxmlÎļþ, ÔÚºǫ́¿ØÖÆÌ¨µ÷ÊÔÊä³ö°ü×°ºÃµÄxml¾ÍÐÐÁË (µ±È»ÄãµÃÏÈÅųýÍøÂçÁ¬½ÓµÄÎÊÌâ,ÒòÎªÍøÂçÁ¬½Óµ¼ÖÂÄãµÄ·þÎñÆ÷½ÓÊÕ²»ÁË,»òÕß·¢ËͲ»Á˶¼ÓпÉÄÜ·¢ÉúµÄ). ÐèÒª·¢ËͲ»Í¬µÄÐÅÏ¢µÄʱºò, д¸öº¯ÊýÐÞ¸ÄxmlÀïÃæµÄÏûÏ¢²¿·Ö¾Í¿ÉÒÔÁË.

¿ª·¢¹ý³Ì

Ê×ÏÈ, ÎÒÃÇÏÖÔÚ¿ÉÒÔ°ÑÓÃÓÚͨ¹ý΢ÐŹ«ÖÚºÅÑéÖ¤µÄ´úÂë¸ø×¢Ê͵ôÁË(×îºÃ²»ÒªÉ¾³ý), È»ºóÎÒÃÇн¨Ò»¸öÏàͬÃû×ֵĺ¯Êý

ÏÂÃæÊÇÎÒµÄһЩ´úÂë(ΪÁ˸üÁ˽âÕû¸ö»ù±¾µÄ½á¹¹, ´úÂëÓÐËùɾ¼õ, Ö÷ÒªÊÇ»ñÈ¡Êý¾Ý²¿·Ö¸ú¸ñʽ×é×°²¿·Ö)

# ÕâÊǶδúÂëÊÇÎÒdictÓ¦Óõķµ»ØÎ¢ÐÅÏûÏ¢ÏìÓ¦²¿·Ö, Ö÷Òª¹¦ÄÜÊÇ»ñÈ¡ÏûÏ¢->×ö³ö¶ÔÓ¦·´Ó¦->·µ»ØÏûÏ¢
# ΪÁË·½±ã´ó¼ÒÀí½â, ÓÐÒ»²¿·ÖÎÒ½«»áÓÃ"(--tips--)"µÄ¸ñʽ½øÐмò»¯, Ö»±£Áô±ØÒª²¿·Ö
# ´úÂ뿪ʼ


# -*- coding: utf-8 -*-

# Õâ¶ÎÊÇÐèÒªÌí¼ÓµÄ,Ö÷ÒªÊÇΪÁËÌí¼Ópath,±£Ö¤djangoµÄÕý³£ÔËÐÐ
# (ÒòΪÎÒµÄdjangoÓõÄÊÇ×Ô¼ºµÄ°üÂï)
import os
import sys
root = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(root, '../site-packages/Django-1.9.7-py2.7.egg'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'yuuuuchang.settings'

from django.shortcuts import render
from django.http.response import HttpResponse, HttpResponseBadRequest
from django.views.decorators.csrf import csrf_exempt

from wechat_sdk import WechatBasic
from wechat_sdk.exceptions import ParseError
from wechat_sdk.messages import TextMessage, VoiceMessage, ImageMessage, VideoMessage, LinkMessage, LocationMessage, \
	EventMessage

# (-- ¸öÈËÊý¾ÝµÄµ÷ÓÃ, ×Ô¶¨Òå·µ»Ø¸ñʽµÄ×é×°, ¸úÊý¾Ý¿â²éѯµÄÈë¿Ú --)

# wechat_sdkÐèÒª³õʼ»¯Ò»Ð©Êý¾Ý
wechat = WechatBasic(token=WECHAT_TOKEN, appid=WEIXIN_APPID, appsecret=WEIXIN_APPSECRET)

# def wechat_message(request):
# 	""" ΢ÐÅÈÏÖ¤ """
# 	if request.method == 'GET':
# 	signature = request.GET.get('signature')
# 		timestamp = request.GET.get('timestamp')
# 		nonce = request.GET.get('nonce')
#
# 		if not wechat.check_signature(signature=signature, timestamp=timestamp, nonce=nonce):
# 			return HttpResponseBadRequest('Verify Failed')
# 		else:
# 			return HttpResponse(request.GET.get('echostr', ''), content_type='text/plain')


def wechat_message(request):
	""" ÏûÏ¢Èë¿Ú,Óû§Í¨¹ýÊäÈë¿ò·¢Ë͵ÄÏûÏ¢¶¼·¢µ½ÕâÀï´¦Àí """

	# ½âÎö±¾´ÎÇëÇóµÄ XML Êý¾Ý
	try:
		wechat.parse_data(data=request.body)
	except ParseError:
		return HttpResponseBadRequest('ÎÞЧµÄxmlÊý¾Ý')

	# »ñÈ¡½âÎöºÃµÄ΢ÐÅÇëÇóÐÅÏ¢
	message = wechat.get_message()

	# ¼ÙÈçÐÅÏ¢ÊÇÎı¾¸ñʽ
	# (TextMessageÊÇwechat_sdk¶¨ÒåµÄÒ»¸öÎı¾ÏûÏ¢Àà,ÏÂÃæ»¹ÓÐÓïÒôÀàÖ®ÀàµÄ,¾­¹ýÉÏÃæ½âÎöµÄÏûÏ¢¶¼»á¹éÊôµ½ÕâЩÀàÖÐ)
	if isinstance(message, TextMessage):
		context = message.content.strip()
		
		# ¼ÙÉèÓû§ÊäÈëµÄÊÇʲôÎÄ×Ö,È»ºó×ö³öÏàÓ¦·´Ó¦
		if context == '±Ê¼Ç' or context == 'blog':
			tips = 'ÕâÀïÉèÖÃÄãÐèÒª·¢¸øÓû§µÄÎÄ×Ö'

		elif context == 'ѧϰ' or context == 'study':
			tips = 'ÕâÀïÉèÖÃÄãÐèÒª·¢¸øÓû§µÄÎÄ×Ö'

		elif context == 'help':
			tips = 'ÕâÀïÉèÖÃÄãÐèÒª·¢¸øÓû§µÄÎÄ×Ö'
			
		else:
			# (-- »ñÈ¡µ½context, ²¢ÇÒÓÃÕâ¸öcontext×÷Ϊ²éѯÌõ¼þÔÚÊý¾Ý¿âÖвéÕÒÏàÓ¦½á¹û --)
			# (-- Èç¹ûÄãÒ²ÓдÓÊý¾Ý¿â»ñÈ¡Êý¾ÝÈ»ºó·µ»ØµÄ²Ù×÷,¼ÇµÃ°Ñ½á¹ûתutf-8¸ñʽ --)

			# ûÓвéѯ½á¹û
			if len(foundword) == 0:
				tips = 'δ²éѯµ½½á¹û,»»¸ö´ÊÊÔÊÔ?'

			# ²éѯµ½Ò»¸ö
			elif len(foundword) == 1:
				# (-- ½«½á¹ûÓÃ×Ô¶¨ÒåµÄ¸ñʽ´ò°üºÃ(Ö÷ÒªÊÇ»»ÐиúËõ½ø),È»ºó·Åµ½tipsÀïÃæ  --)

			# ²éѯµ½¶à¸ö½á¹û
			else:
				# (-- ½«½á¹ûÓÃ×Ô¶¨ÒåµÄ¸ñʽ´ò°üºÃ(Ö÷ÒªÊÇ»»ÐиúËõ½ø),È»ºó·Åµ½tipsÀïÃæ  --)
	
	# Èç¹ûÊÕµ½ÓïÒôÐÅÏ¢
	if isinstance(message, VoiceMessage):
		tips = '´ò×ÖÀ²,ÓïÒôÏûÏ¢ÎÒÌý²»¶®~'
	
	# Èç¹ûÊÕµ½Í¼Æ¬ÐÅÏ¢(ÏÂÃæ¿´Ìáʾ¾ÍÖªµÀÁË,²»¶à˵)
	if isinstance(message, ImageMessage):
		tips = 'ËäÈ»Óе㿴²»¶®~µ«ÊÇÎÒϲ»¶ÕâÕÅͼ!'

	if isinstance(message, VideoMessage):
		tips = 'Õâ¸öÊÇ..ÊÓÆµÏûÏ¢?Ôõô´ò¿ª½Ì½ÌÎÒÂï~'

	if isinstance(message, LinkMessage):
		tips = '²»Òª·¢Ææ¹ÖµÄµØÖ·¸øÎÒ,ÎÒÕæµÄ¿´²»¶®ßÖ'

	if isinstance(message, LocationMessage):
		tips = 'Õâ¸ö...ÄıßÊDZ±?(·³ÕרÓÃãÂX±íÇé)'
	
	# ÕâÀïÊǶ¨ÒåÓû§¶Ô¹«ÖÚºÅËù×öµÄÊÂ(ʼþ,±ÈÈç¹Ø×¢,È¡Ïû¹Ø×¢µÈ)
	if isinstance(message, EventMessage):
		# ¹«Öںű»¹Ø×¢µÄʱºò
		if message.type == 'subscribe':
			tips = '''¸ÐлÄã¹Ø×¢"Ó㳦±Ê¼Ç"! balabala...'''
		else:
			(-- Ê¡ÂÔ --)
			
	# ×îºó, ¾­¹ýÇ°ÃæÖî¶à´¦Àí, ÎÒÃǵóöÁËÒ»¸ötipsµÄÎı¾ÐÅÏ¢, Õâ¾ÍÊÇÎÒÃÇÏë¶ÔÓû§ËµµÄ, ÎÒÃÇÐèÒª´ò°ü, È»ºóÒԹ涨¸ñʽ·µ»Ø
	# Ê×ÏÈÊÇ´ò°ü, wechat_sdkÒѾ­×öÁËÒ»¸ö·½·¨ÁË
	result = wechat.response_text(content=tips)
	
	# È»ºóÊÇ·µ»Ø,¼ÇµÃ¹æ¶¨ÊÇxml¸ñʽ·µ»Ø
	return HttpResponse(result, content_type='application/xml')	

»ù±¾ÉϵÄÒªµã¾ÍÊÇÕâÑùÁË, ̫ƫԶµÄÎÒÒѾ­ÌÞ³ýµô

Äã¿ÉÒÔÏÂÊÖÍæÍæ, ×£ÄãÍæµÃÓä¿ì~

ÒÔÉÏ!

µã»÷¸´ÖÆÁ´½Ó ÓëºÃÓÑ·ÖÏí!»Ø±¾Õ¾Ê×Ò³
ÉÏһƪ£ºÎ¢ÐŹ«ÖںŴ´½¨¶þάÂëticketµÄ2ÖÖ·½Ê½½²½â
ÏÂһƪ£ºÒ»ÆðÑÞѧSpringboot¿ª·¢Î¢ÐŹ«ÖÚºÅ(¶þ)
Ïà¹ØÎÄÕÂ
ͼÎÄÍÆ¼ö
µã»÷ÅÅÐÐ

¹ØÓÚÎÒÃÇ | ÁªÏµÎÒÃÇ | ¹ã¸æ·þÎñ | Ͷ×ʺÏ×÷ | °æÈ¨ÉêÃ÷ | ÔÚÏß°ïÖú | ÍøÕ¾µØÍ¼ | ×÷Æ··¢²¼ | Vip¼¼ÊõÅàѵ | ¾Ù±¨ÖÐÐÄ

°æÈ¨ËùÓÐ: È«·å°²È«ÁªÃË--ÖÂÁ¦ÓÚ×öʵÓõÄIT¼¼ÊõÑ§Ï°ÍøÕ¾