Django Simple Captcha的使用


Django Simple Captcha的使用

1、下載Django Simple Captcha

django-simple-captcha官方文檔地址
http://django-simple-captcha.readthedocs.io/en/latest/

2、配置settings

# django_simple_captcha 驗證碼配置其他配置項查看文檔
# 默認格式
CAPTCHA_OUTPUT_FORMAT = '%(image)s %(text_field)s %(hidden_field)s '
CAPTCHA_NOISE_FUNCTIONS = ('captcha.helpers.noise_null', # 沒有樣式
    # 'captcha.helpers.noise_arcs', # 線
    # 'captcha.helpers.noise_dots', # 點
)
# 圖片中的文字為隨機英文字母,如 mdsh
# CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.random_char_challenge' 
 # 圖片中的文字為數字表達式,如2+2=
CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.math_challenge'   
# 超時(minutes)
CAPTCHA_TIMEOUT = 1 
# 驗證碼寬度和高度
# CAPTCHA_IMAGE_SIZE = (100, 25)

3、配置form.py

class LoginForms(forms.Form):
    email = forms.CharField(label="郵箱", max_length=128)
    password = forms.CharField(label="密碼", max_length=128, widget=forms.PasswordInput)
    captcha = CaptchaField()

4、配置views.py

def login(request):
    pass
   # 圖片驗證碼
    # hashkey驗證碼生成的秘鑰,image_url驗證碼的圖片地址
    hashkey = CaptchaStore.generate_key()
    image_url = captcha_image_url(hashkey)
    login_form = forms.LoginForms()
    # Python內置了一個locals()函數,它返回當前所有的本地變量字典
    return render(request, 'user/login.html', locals())

5、html 模板中顯示驗證碼

 <div class="field">
          <div class="ui left img input">
            <button  id='js-captcha-refresh'  class='ui icon button ' ><i class="refresh icon green"></i></button>
              <img src="{{ image_url}}" alt="captcha" class="captcha">
              <input autocomplete="off" id="id_captcha_1" name="captcha_1" type="text" placeholder="輸入驗證碼">
              <input id="id_reg_captcha_0" name="captcha_0" type="hidden" value="{{ hashkey }}">
          </div>
        </div>

6、ajax刷新驗證碼

<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
<script>
    $('.captcha').click(function () {
        $.getJSON("/captcha/refresh/", function (result) {
            $('.captcha').attr('src', result['image_url']);
            $('#id_captcha_0').val(result['key'])
        });

    });
</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM