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