亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

用Python寫一個滑動驗證碼

系統 1914 0

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 " >
class = " form-horizontal col-md-6 col-md-offset-3 login-form " > { % csrf_token % }
class = " form-group " >
class = " col-sm-10 " > " text " class = " form-control " id= " username " name= " username " placeholder= " 用戶名 " >
class = " form-group " >
class = " col-sm-10 " > " password " class = " form-control " id= " password " name= " password " placeholder= " 密碼 " >
class = " form-group " > { # 放置極驗的滑動驗證碼#}
" popup-captcha " >
class = " form-group " >
class = " col-sm-offset-2 col-sm-10 " > class = " login-error " >
View Code

2.2.index.py(跳轉界面)

              
"
              
                en
              
              
                "
              
              >

    
              
              "
              
                UTF-8
              
              
                "
              
              >
    
              
                index
              
              

這是index界面

View Code

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),
]
              
            
View Code

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)
            
View Code

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
              
              
                '
              
              
                ,
    }
}
              
            
修改setting.py中的這一部分

  同時在項目下的app目錄中的__init__.py中加上兩行代碼,告訴pychram我用了mysql。

              
                import
              
              
                 pymysql
pymysql.install_as_MySQLdb()
              
            
View Code

  在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.效果圖

用Python寫一個滑動驗證碼_第1張圖片

5.項目目錄結構圖

用Python寫一個滑動驗證碼_第2張圖片

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 成人精品免费视频 | 日本中文字幕不卡免费视频 | 午夜国产福利在线 | 国产成人亚洲精品乱码在线观看 | 欧美曰韩免费视频一区 | 99热久久这里就有精品 | 亚洲精品一区久久狠狠欧美 | 亚洲国产精品a在线 | 精品久久久久久无码中文字幕 | 综合网久久 | 国产日韩欧美91 | 毛片免费高清免费 | 五月婷婷社区 | 免费看一级毛片欧美 | 四虎4hu影库免费永久国产 | 中文字字幕在线 | 曰批免费视频播放在线看片一 | 毛片午夜 | 毛片毛片毛片毛片毛片 | 成人性一级视频在线观看 | 华人欧美国产在线精品 | 久久视热这只是精品222 | 久久大香香蕉国产免费网vrr | 亚洲精品欧洲久久婷婷99 | 亚洲欧美国产另类 | 成人亚洲国产 | 国产亚洲女在线精品 | 日本在线色视频 | 99久久做夜夜爱天天做精品 | 久操视频免费在线观看 | 欧美日韩中文国产一区二区三区 | 黄页网址大全免费观看美女 | 精品国产一区二区 | 久久免费视频99 | 国产成人综合亚洲欧洲色就色 | 妖精www视频在线观看高清 | 国产欧美一区二区精品性色99 | 久久亚洲不卡一区二区 | 国产农村一一级特黄毛片 | 久久精品伊人 | 日韩国产欧美精品综合二区 |