Django-simple-captcha検証コードパッケージの使用方法詳細
django-simple-captchaはdjangoの検証コードパッケージで、とても簡単で実用的です。今回記録したのはどのように検証コードをクリックして検証コードを更新しますか?この機能の公式文書は詳細に提供されていません。
django-simple-captcha公式文書:http://django-simple-captcha.readthedocs.io/en/latest/
django-simple-captchaのgithub URL:https://github.com/mbi/django-simple-captcha
開始
1.pip install django-simple-captchaをインストールして、pip install Pillow
2.captchaをsettings.pyのINSTALLED_に加える。APPS
3.python manager.py makemigrationsとpython manage.py migrateを実行します。
4.urlルートはurls.pyのurlpatternsに加入する。
challege=models.chard Field(blank=False、max_length=32)〓〓〓〓〓〓の検証コードの大文字あるいは数学はたとえば1+1を計算します。
レスポンス=models.Chihard Field(blank=False、max_length=32)菗菗は入力する検証コードを必要とします。小文字または数学計算の結果は例えば2です。
hashkey=models.chard Field(blank=False、max_length=40,unique=True)菗hash値
expiration=models.DateTimeField(blank=False)菗の期限切れ時間
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
django-simple-captcha公式文書:http://django-simple-captcha.readthedocs.io/en/latest/
django-simple-captchaのgithub URL:https://github.com/mbi/django-simple-captcha
開始
1.pip install django-simple-captchaをインストールして、pip install Pillow
2.captchaをsettings.pyのINSTALLED_に加える。APPS
3.python manager.py makemigrationsとpython manage.py migrateを実行します。
4.urlルートはurls.pyのurlpatternsに加入する。
urlpatterns = [
path('captcha/', include('captcha.urls')), #
path('refresh_captcha/', views.refresh_captcha), # ,ajax
path('test/',IndexView.as_view()), #get post
]
5.views.pyに以下のコードを入れる
from django.shortcuts import render
from django.views.generic import View
from captcha.models import CaptchaStore
from captcha.helpers import captcha_image_url
from django.http import HttpResponse
import json
#
def captcha():
hashkey = CaptchaStore.generate_key() #
image_url = captcha_image_url(hashkey) #
captcha = {'hashkey': hashkey, 'image_url': image_url}
return captcha
#
def refresh_captcha(request):
return HttpResponse(json.dumps(captcha()), content_type='application/json')
#
def jarge_captcha(captchaStr, captchaHashkey):
if captchaStr and captchaHashkey:
try:
# hashkey response
get_captcha = CaptchaStore.objects.get(hashkey=captchaHashkey)
if get_captcha.response == captchaStr.lower(): #
return True
except:
return False
else:
return False
class IndexView(View):
def get(self, request):
hashkey = CaptchaStore.generate_key() #
image_url = captcha_image_url(hashkey) #
print(hashkey,image_url)
captcha = {'hashkey': hashkey, 'image_url': image_url}
return render(request, "login.html", locals())
def post(self, request):
capt = request.POST.get("captcha", None) #
key = request.POST.get("hashkey", None) #
if jarge_captcha(capt, key):
return HttpResponse(" ")
else:
return HttpResponse(" ")
6.templatesフォルダの下のlogin.の内容
{% load static %}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.0.0/js/bootstrap.js"></script>
</head>
<body>
<form action="/test/" method="post">
{% csrf_token %}
<a href="#" rel="external nofollow" class="captcha">
<img src="{{ captcha.image_url }}" alt=" " id="id_captcha" >
</a> <br>
<input type="text" name="captcha" placeholder=" "> <br>
<input value="{{ captcha.hashkey }}" name="hashkey" type="hidden" id="id_captcha_0">
<button type="submit" class="btn btn-primary btn-block "> </button>
</form>
<script>
<!-- js -->
$(document).ready(function(){
$('.captcha').click(function () {
$.getJSON("/refresh_captcha/", function (result) {
$('#id_captcha').attr('src', result['image_url']);
$('#id_captcha_0').val(result['hashkey'])
});
});
});
</script>
</body>
</html>
django-simple-captchaはsessionを使って検証コードを保存していません。データベースを使って移動しているときにテーブルcaptchaを生成します。captchastoreには、以下のフィールドが含まれています。challege=models.chard Field(blank=False、max_length=32)〓〓〓〓〓〓の検証コードの大文字あるいは数学はたとえば1+1を計算します。
レスポンス=models.Chihard Field(blank=False、max_length=32)菗菗は入力する検証コードを必要とします。小文字または数学計算の結果は例えば2です。
hashkey=models.chard Field(blank=False、max_length=40,unique=True)菗hash値
expiration=models.DateTimeField(blank=False)菗の期限切れ時間
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。