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.项目目录结构图

