前言
近幾年,Python語言的火熱,少不了培訓(xùn)機(jī)構(gòu)的推波助瀾,更離不開Python語言本身的魅力,他的簡潔讓普通人也能走進(jìn)代碼的世界,就連地產(chǎn)界大佬王老板也來湊熱鬧。Python語言像一個(gè)萬能百寶箱,能做的事情太多,也讓很多初學(xué)者迷了眼,什么都想學(xué),最后,一場空!
Python自學(xué)第一技
不貪多,選中一個(gè)方向深入研究學(xué)習(xí),本篇專注Python Web開發(fā),其他方向讀者可繞行!
伴隨著移動互聯(lián)網(wǎng)的浪潮,移動開發(fā)如火如荼,一時(shí)風(fēng)頭無兩,曾經(jīng)哪些專注PC端開發(fā)的前輩們不知是否還在,但棲息在“企鵝”的翅膀下富起來的個(gè)人企業(yè)已不在少數(shù)。作為Python語言下優(yōu)秀的web開發(fā)框架django自然也能勝任移動互聯(lián)網(wǎng)時(shí)代,雖然他的架構(gòu)依然傾向于PC開發(fā),但絲毫也不會影響我們學(xué)習(xí)他,并運(yùn)用它進(jìn)入移動開發(fā)的大門,跟隨企鵝的步伐向錢邁進(jìn)!
django微信公眾號開發(fā)步驟
既然是公眾號開發(fā),那么自然你先得要有一個(gè)公眾號,至于是不是服務(wù)號、訂閱號不重要,我們又不是去運(yùn)營,個(gè)人號也是可以的,止于如何注冊,這里不做贅述,大家自行去解決!
一、準(zhǔn)備微信公眾平臺測試賬號
這里就默認(rèn)大家已經(jīng)有了自己的公眾號,進(jìn)入之后可以看到在設(shè)置開發(fā)菜單下有個(gè)開發(fā)者工具,點(diǎn)擊之后我們可以看到紅框框起來的兩項(xiàng),如果你從未在別的平臺綁定過開發(fā)者,那么首頁點(diǎn)擊“web開發(fā)者工具”進(jìn)入綁定自己為開發(fā)者,之后點(diǎn)擊“公眾平臺測試賬號”,掃碼登錄開通自己的測試賬號,測試賬號擁有公眾號所有的高級權(quán)限,我們可以在開發(fā)過程中測試所有功能接口,但有一個(gè)要求是操作人員必須先關(guān)注自己的測試賬號!
登錄進(jìn)入自己的公眾平臺測試賬號之后,界面如下所示!
- 測試號信息
appID和appsecret這兩個(gè)自然不必說,是公眾號開發(fā)的一切基礎(chǔ);
- 接口配置信息
URL:這里填寫公眾號的回調(diào)地址
Token:自己填寫,可以復(fù)雜,也可以簡單,開發(fā)的時(shí)候盡量簡單點(diǎn),自己能記住就行!
這里的信息對應(yīng)的是正式公眾號基本配置里的信息,在切換到正式公眾號的時(shí)候,程序中對應(yīng)的就得在這里配置!
- JS接口安全域名
這里如果你不是用微信的JSSADK的話,那么就不需要設(shè)置,需要的話就設(shè)置,測試號支持IP和域名,這里只填入域名或IP,注意如果你開發(fā)不是用80端口,那么域名和IP后還得跟隨端口號!注意:這里對應(yīng)的正式公眾號在右側(cè)頂部頭像和用戶名的下拉菜單中有個(gè)功能設(shè)置中配置!
了解了,這幾項(xiàng)之后,這里要注意,第二項(xiàng)接口配置信息在回調(diào)地址【URL】無法訪問的情況下是不能驗(yàn)證成功的,那么這里又有了一個(gè)要求就是你必須要有一個(gè)能訪問的服務(wù)器,如果是域名,還得備案。這就給不少初學(xué)開發(fā)者設(shè)置了門檻,那么,既然想進(jìn)入這行,這點(diǎn)投資是值得的!
二、準(zhǔn)備好服務(wù)器進(jìn)入開發(fā)
Python擁有非常多的庫,安裝Python之后官方很多功能也是有許許多多的庫來提供,只不過這些庫有官方來維護(hù),那么,第三方庫自然更是多如牛毛,幾乎你能想到的每一個(gè)方向都有對應(yīng)的庫,我們下來就是要利用一個(gè)wechatpy的庫來進(jìn)入之后的開發(fā)!
- 創(chuàng)建虛擬環(huán)境安裝django
# 創(chuàng)建虛擬環(huán)境python3 -m venv venv# 激活虛擬環(huán)境venvScriptsactivate ## windowns激活source venv/bin/activate ## linux激活# 安裝djangopip3 install django
- 安裝wechatpy
pip3 install wechatpy# with cryptography (推薦)pip3 install wechatpy[cryptography]# with pycryptodomepip3 install wechatpy[pycrypto]
- 創(chuàng)建一個(gè)django項(xiàng)目和應(yīng)用
# 創(chuàng)建一個(gè)django項(xiàng)目django-admin startproject mysite .# 創(chuàng)建一個(gè)應(yīng)用demopython3 manage.py startapp demo
- 在demo的views.py文件中創(chuàng)建回調(diào)驗(yàn)證接口代碼,如下
from wechatpy.utils import check_signatureclass WechatServe(View): # 回調(diào)接口 def get(self, request, *args, **kwargs): 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 = config_admin.get('token') try: check_signature(token, signature, timestamp, nonce) except InvalidSignatureException: pass return HttpResponse(echostr) def post(self, request, *args, **kwargs): # post請求的數(shù)據(jù)會回調(diào)到這里,比如用戶向公眾號發(fā)送消息 msg = parse_message(request.body) print(msg, 'msg') return HttpResponse('success')
這個(gè)視圖的作用就是在第二步的時(shí)候微信官方用來驗(yàn)證服務(wù)器地址的有效性,其中g(shù)et請求中的參數(shù)說明如下:
開發(fā)者提交信息后,微信服務(wù)器將發(fā)送GET請求到填寫的服務(wù)器地址URL上,GET請求攜帶參數(shù)如下表所示:
參數(shù) | 描述 |
signature | 微信加密簽名,signature結(jié)合了開發(fā)者填寫的token參數(shù)和請求中的timestamp參數(shù)、nonce參數(shù)。 |
timestamp | 時(shí)間戳 |
nonce | 隨機(jī)數(shù) |
echostr | 隨機(jī)字符串 |
開發(fā)者通過檢驗(yàn)signature對請求進(jìn)行校驗(yàn),也就是wechatpy為我們提供的check_signature()方法為我們做的事情,他做了中間的一些加密對比的事情,驗(yàn)證成功后,原樣返回echostr參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。
- 在demo應(yīng)用下創(chuàng)建一個(gè)urls.py的文件,代碼如下
from django.urls import pathfrom .import views# 應(yīng)用的命名空間app_name = 'demo'urlpatterns = [ # 構(gòu)造驗(yàn)證視圖的URL地址 path("server/", views.WechatServe.as_view(), name="server"),]
- 將demo下創(chuàng)建的urls.py 引入到項(xiàng)目mysite的urls.py中
from django.contrib import adminfrom django.urls import path, includeurlpatterns = [ path('admin/', admin.site.urls), path("demo/", include('demo.urls')),]
這樣我們就構(gòu)造了一個(gè)有效的驗(yàn)證視圖,URL:hhtp://www.xxxx.com/demo/server/, 那這個(gè)url地址就是在第二步接口配置信息中需要填入的域名!
記住,別忘了啟動調(diào)試服務(wù)器(runserver),如果有端口號,還需要加入端口號,至此,我們就可以正式進(jìn)入微信公眾平臺之后的開發(fā)了,準(zhǔn)備工作就到此告一段落!
歡迎大家關(guān)注學(xué)習(xí),一起進(jìn)步,筆者專注django相關(guān)開發(fā),對django有深入研究,可一起學(xué)習(xí)探討,并且承接django相關(guān)項(xiàng)目的開發(fā)任務(wù)!
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。