1. モジュールをインポートし、検証状態を定義する PIL から Image、ImageDraw、ImageFont をインポートします django.utils.six から BytesIO をインポートします def verify_code(リクエスト): #ランダム関数モジュールの導入 import random #画面の背景色、幅、高さの変数を定義します bgcolor = (random.randrange(20, 100), random.randrange( 20、100)、255) 幅 = 100 高さ = 25 # スクリーンオブジェクトを作成する im = Image.new('RGB', (width, height), bgcolor) #ブラシオブジェクトを作成する draw = ImageDraw.Draw(im) #ブラシの point() 関数を呼び出して、i の範囲 (0, 100) にノイズを描画します。 xy = (random.randrange(0, 幅), random.randrange(0, 高さ)) 塗りつぶし = (random.randrange(0, 255), 255, random.randrange(0, 255)) 描画ポイント(xy, 塗りつぶし=塗りつぶし) #検証コードの代替値を定義します str1 = 'ABCD123EFGHIJK456LMNOPQRS789TUVWXYZ0' #検証コードとして4つの値をランダムに選択 rand_str = '' iが範囲(0, 4)内にある場合: rand_str += str1[random.randrange(0, len(str1))] #フォント オブジェクトを構築します。Ubuntu のフォント パスは "/usr/share/fonts/truetype/freefont" です。 フォント = ImageFont.truetype('FreeMono.ttf', 23) #フォントカラーの構築 fontcolor = (255, random.randrange(0, 255), random.randrange(0, 255)) #4つの単語を描画する draw.text((5, 2), rand_str[0], font=font, fill=fontcolor) 描画テキスト((25, 2), rand_str[1], フォント=フォント, 塗りつぶし=フォントカラー) 描画テキスト((50, 2), rand_str[2], フォント=フォント, 塗りつぶし=フォントカラー) 描画テキスト((75, 2), rand_str[3], フォント=フォント, 塗りつぶし=フォントカラー) #ブラシを離して描画 # さらなる検証のためにセッションに保存 request.session['verifycode'] = rand_str #メモリファイル操作 buf = BytesIO() #画像をメモリに保存します。ファイル形式はpngです im.save(buf, 'png') #メモリ内の画像データをクライアントに返します。MIMEタイプはimage pngです HttpResponse(buf.getvalue(), 'image/png') を返します。 3. ウェブページのimgに直接貼り付ける
4. ajaxを使用して認証パスワードとアカウントを取得する <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <title>ログイン</title> </head> <本文> <h1 class="表示"></h1> <input type="text" id = ユーザー名 value="{{username}}"> <br> <input type="text" id = パスワード> <br> <input type="text" id = yum> <a>認証コードを入力してください</a> <br> <img src="/verify_code/" alt="確認コード"> <input type="button" id="Ajax" value="ajax ログイン"> <br> <input type="checkbox" id = "ow" name="ow"> パスワードを記憶する<br> <a href="/get_cookies">クリックしてクッキーを取得</a> </本文> <script src="/static/index/js/jquery-3.3.1.min.js"></script> </html> <スクリプト> $(関数() { $('#Ajax').click(関数() { ユーザー名 = $('#username').val(); パスワード = $('#password').val(); ow = $("#ow").val(); yum は $('#yum').val() で始まります。 $.ajax({ 'url': '/loginajax', 'タイプ': '投稿', 'データ': {'ユーザー名': ユーザー名、'パスワード': パスワード、 "おいしい":おいしい,}, '成功':function(データ){ //ログインに成功すると1が返されます //ログインに失敗した場合は0を返す //検証に失敗しました。3 を返します (data.res == 1)の場合{ $('.show').show().html('ログイン成功') } そうでない場合 (data.res == 0) { $('.show').show().html('ログインに失敗しました') } そうでない場合 (data.res == 3){ $('.show').show().html('確認コードの入力に失敗しました') } } }); }); }); </スクリプト> 上記のajaxでは、アカウントのパスワードと確認コードがサーバーに送信されます。 検証機能では yzm = request.POST.get('yum') # 検証コードを取得します vaue = request.session['verifycode'] # 画像を生成するときに検証コードをセッションに保存します if yzm !=vaue: # 等しくない場合は 3 を返します HTML ajax は検証エラーを表示します return JsonResponse({'res':3}) 結果: 要約する 以上が私がご紹介した内容です。Django は Pillow を使って簡単に検証コード機能 (python) を設定します。お役に立てれば幸いです。ご質問があれば、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
>>: MacBook 向け Python 3.7 インストール チュートリアル
このドキュメントを作成した当時は2019年12月頃で、er2.200が最新バージョンでした。 1.画...
目次概要オブザーバーパターンの応用シナリオオブザーバーパターンの実装要約する概要オブザーバー パター...
目次序文1. 全員にインストールパッケージを用意する2. Navicatをインストールし、Navic...
成し遂げるこの効果は CSS を使用して完全に再現することは困難です。 CSS でシミュレートされた...
1. 新しいディスクを準備し、現在のルートパーティションと同じファイルシステムでフォーマットし、ディ...
仕える: # chkconfig --list すべてのシステム サービスを一覧表示します # ch...
MySQLでは判定記号がよく使われますが、等しくない記号はもっと一般的に使われます。次の3つの等しく...
voidキーワードの紹介まず、void キーワードは JavaScript で非常に重要なキーワード...
端的に言うと、スクロール可能な要素には非常によくある状況があります。通常、スクロールすると、要素が現...
MySQL シーケンス AUTO_INCREMENT の詳細な説明とサンプルコードMySQL シーケ...
1. mysql tar ファイルをダウンロードします。参考: 2. インストールパッケージがあるデ...
原理ホバーしたときに要素に影を設定します: box-shadow で、通常とは異なるスタイルにします...
この記事では、MySQL 5.7.27 winx64のインストールと設定方法を参考までに紹介します。...
MySQL を使用する際、フィールドをソートしたりクエリしたりすることがよくあります。通常は、中国語...
目次序文入力ボックスコンポーネントレイアウトvモデルデータ検証ルール設計形状サブコンポーネントは検証...