1.準備階段
滑動驗證碼我們可以直接用GEETEST的滑動驗證碼。
打開網址:https://www.geetest.com/?,找到技術文檔中的行為驗證,打開部署文檔,點擊Python,下載ZIP包。
ZIP包下載地址:https://github.com/GeeTeam/gt3-python-sdk/archive/master.zip
解壓,找到django_demo,為了方便復制粘貼代碼,可以用編輯器打開項目。
2.實施
自己先寫一個簡單的登錄,然后將django_demo中的關鍵代碼復制到我們自己的項目中。過程省去,我直接貼代碼。
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(跳轉界面)
"
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),
#
極驗滑動驗證碼,獲取驗證碼的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.
#
使用極驗滑動驗證碼的登錄功能
def
login(request):
#
if request.is_ajax(): # 如果是AJAX請求
if
request.method ==
"
POST
"
:
#
初始化一個給AJAX返回的數據
ret = {
"
status
"
: 0,
"
msg
"
:
""
}
#
從提交過來的數據中 取到用戶名和密碼
username = request.POST.get(
"
username
"
)
pwd
= request.POST.get(
"
password
"
)
#
獲取極驗 滑動驗證碼相關的參數
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:
#
驗證碼正確
#
利用auth模塊做用戶名和密碼的校驗
user = auth.authenticate(username=username, password=
pwd)
if
user:
#
用戶名密碼正確
#
給用戶做登錄
auth.login(request, user)
ret[
"
msg
"
] =
"
/index/
"
else
:
#
用戶名密碼錯誤
ret[
"
status
"
] = 1
ret[
"
msg
"
] =
"
用戶名或密碼錯誤!
"
else
:
ret[
"
status
"
] = 1
ret[
"
msg
"
] =
"
驗證碼錯誤
"
return
JsonResponse(ret)
return
render(request,
"
login.html
"
)
def
index(request):
return
render(request,
'
index.html
'
)
#
處理極驗驗證碼的試視圖
#
請在官網申請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需要加一些東西。首先創建一個數據庫,用于存儲各類表。創建好之后,需要連接pycharm。
DATABASES =
{
'
default
'
: {
'
ENGINE
'
:
'
django.db.backends.mysql
'
,
'
NAME
'
:
'
bbs
'
,
'
HOST
'
:
'
127.0.0.1
'
,
'
PORT
'
:
'
3306
'
,
'
USER
'
:
'
root
'
,
'
PASSWORD
'
:
'
000000
'
,
}
}
同時在項目下的app目錄中的__init__.py中加上兩行代碼,告訴pychram我用了mysql。
import
pymysql
pymysql.install_as_MySQLdb()
在settings.py的最下方加上:
STATICFILES_DIRS =
[
os.path.join(BASE_DIR,
"
static
"
)
]
2.6.生成用戶
終端執行兩行代碼:
python manage.py makemigrations
python manage.py migrate
在auth_user表中添加一個用戶,超級用戶和普通用戶都可以。
python manage.py createsuperuser
3.靜態文件
https://files.cnblogs.com/files/missdx/static.rar
4.效果圖
5.項目目錄結構圖
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

