1.準(zhǔn)備階段
滑動(dòng)驗(yàn)證碼我們可以直接用GEETEST的滑動(dòng)驗(yàn)證碼。
打開網(wǎng)址:https://www.geetest.com/?,找到技術(shù)文檔中的行為驗(yàn)證,打開部署文檔,點(diǎn)擊Python,下載ZIP包。
ZIP包下載地址:https://github.com/GeeTeam/gt3-python-sdk/archive/master.zip
解壓,找到django_demo,為了方便復(fù)制粘貼代碼,可以用編輯器打開項(xiàng)目。
2.實(shí)施
自己先寫一個(gè)簡單的登錄,然后將django_demo中的關(guān)鍵代碼復(fù)制到我們自己的項(xiàng)目中。過程省去,我直接貼代碼。
2.1.login.py(登錄界面)

" en " > " UTF-8 " >歡迎登錄 " stylesheet " href= " /static/bootstrap/css/bootstrap.min.css " > " stylesheet " href= " /static/mystyle.css " >class = " container " >class = " row " >
2.2.index.py(跳轉(zhuǎn)界面)

" en " > " UTF-8 " >index 這是index界面
2.3.urls.py(部署路徑)

""" BBS URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/2.2/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin from django.urls import path from blog import views urlpatterns = [ path( ' login/ ' , views.login), path( ' index/ ' , views.index), # 極驗(yàn)滑動(dòng)驗(yàn)證碼,獲取驗(yàn)證碼的url path( ' pc-geetest/register/ ' , views.get_geetest), ]
2.4.views.py

from django.shortcuts import render,HttpResponse from geetest import GeetestLib from django.http import JsonResponse from django.contrib import auth # Create your views here. # 使用極驗(yàn)滑動(dòng)驗(yàn)證碼的登錄功能 def login(request): # if request.is_ajax(): # 如果是AJAX請(qǐng)求 if request.method == " POST " : # 初始化一個(gè)給AJAX返回的數(shù)據(jù) ret = { " status " : 0, " msg " : "" } # 從提交過來的數(shù)據(jù)中 取到用戶名和密碼 username = request.POST.get( " username " ) pwd = request.POST.get( " password " ) # 獲取極驗(yàn) 滑動(dòng)驗(yàn)證碼相關(guān)的參數(shù) gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.POST.get(gt.FN_CHALLENGE, '' ) validate = request.POST.get(gt.FN_VALIDATE, '' ) seccode = request.POST.get(gt.FN_SECCODE, '' ) status = request.session[gt.GT_STATUS_SESSION_KEY] user_id = request.session[ " user_id " ] if status: result = gt.success_validate(challenge, validate, seccode, user_id) else : result = gt.failback_validate(challenge, validate, seccode) if result: # 驗(yàn)證碼正確 # 利用auth模塊做用戶名和密碼的校驗(yàn) user = auth.authenticate(username=username, password= pwd) if user: # 用戶名密碼正確 # 給用戶做登錄 auth.login(request, user) ret[ " msg " ] = " /index/ " else : # 用戶名密碼錯(cuò)誤 ret[ " status " ] = 1 ret[ " msg " ] = " 用戶名或密碼錯(cuò)誤! " else : ret[ " status " ] = 1 ret[ " msg " ] = " 驗(yàn)證碼錯(cuò)誤 " return JsonResponse(ret) return render(request, " login.html " ) def index(request): return render(request, ' index.html ' ) # 處理極驗(yàn)驗(yàn)證碼的試視圖 # 請(qǐng)?jiān)诠倬W(wǎng)申請(qǐng)ID使用,示例ID不可使用 pc_geetest_id = " b46d1900d0a894591916ea94ea91bd2c " pc_geetest_key = " 36fc3fe98530eea08dfc6ce76e3d24c4 " def get_geetest(request): user_id = ' test ' gt = GeetestLib(pc_geetest_id, pc_geetest_key) status = gt.pre_process(user_id) request.session[gt.GT_STATUS_SESSION_KEY] = status request.session[ " user_id " ] = user_id response_str = gt.get_response_str() return HttpResponse(response_str)
2.5.settings.py
settings.py需要加一些東西。首先創(chuàng)建一個(gè)數(shù)據(jù)庫,用于存儲(chǔ)各類表。創(chuàng)建好之后,需要連接pycharm。

DATABASES = { ' default ' : { ' ENGINE ' : ' django.db.backends.mysql ' , ' NAME ' : ' bbs ' , ' HOST ' : ' 127.0.0.1 ' , ' PORT ' : ' 3306 ' , ' USER ' : ' root ' , ' PASSWORD ' : ' 000000 ' , } }
同時(shí)在項(xiàng)目下的app目錄中的__init__.py中加上兩行代碼,告訴pychram我用了mysql。

import pymysql pymysql.install_as_MySQLdb()
在settings.py的最下方加上:
STATICFILES_DIRS = [ os.path.join(BASE_DIR, " static " ) ]
2.6.生成用戶
終端執(zhí)行兩行代碼:
python manage.py makemigrations
python manage.py migrate
在auth_user表中添加一個(gè)用戶,超級(jí)用戶和普通用戶都可以。
python manage.py createsuperuser
3.靜態(tài)文件
https://files.cnblogs.com/files/missdx/static.rar
4.效果圖
5.項(xiàng)目目錄結(jié)構(gòu)圖
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
