Django驗證碼庫之django-simple-captcha

Django實現帶驗證碼登錄功能

_______________________________________________________________________

第一步安裝:

pip install  django-simple-captcha
sudo apt-get -y install libz-dev libjpeg-dev libfreetype6-dev python-dev
pip install  PIL
pip install  Pillow

第二步加載app:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'authpermission',
    'DjangoUeditor',
    'app02',
    'captcha',  # 驗證碼
)

第三步同步數據庫:

python manage.py migrate

第四步添加項目主url:

urlpatterns = [
    url(r'^captcha/', include('captcha.urls')),
]

第五步定義表單增加驗證碼字段:

from django import forms
from captcha.fields import CaptchaField


class RegisterForm(forms.Form):
    """
        註冊表單
    """
    username = forms.EmailField(
        widget=forms.TextInput(
            attrs={
                "class": "form-control",
                "placeholder": "請輸入郵箱賬號",
                "value": "",
                "required": "required"
            }
        ),
        max_length=50,
        error_messages={"required": "用戶名不能爲空", }
    )
    password = forms.CharField(
        widget=forms.PasswordInput(
            attrs={
                "class": "form-control",
                "placeholder": "請輸入密碼",
                "value": "",
                "required": "required"
            }
        ),
        min_length=8,
        max_length=50,
        error_messages={"required": "密碼不能爲空", }
    )
    # 驗證碼
    captcha = CaptchaField()

第六步在視圖函數(views)中驗證表單:

def some_view(request):
    if request.POST:
        form = CaptchaTestForm(request.POST)

        # Validate the form: the captcha field will automatically
        # check the input
        if form.is_valid():
            human = True
    else:
        registerform = RegisterForm()
    return render(
            request, "register.html",
            {"registerform": registerform})

第七步驟html頁面展示:

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Register</title>
    <script src="{% static 'js/jquery-1.12.4.min.js' %}"></script>
    <script src="{% static 'js/register.js' %}"></script>
</head>
<body>
    <div class="cls-content">
        <div class="cls-content-sm panel">
            <p class="pad-btm">Sign In to your account</p>
            {{ registerform }}
            <br><br>
            <input type="submit" name="submit" id="" value="註冊">

        </div>
    </div>
</body>
</html>

第八步使用js動態刷新驗證碼:

$(document).ready(function () {
    $(".captcha").click(function () {
        $.ajax({
            url: '/captcha/refresh/',
            type: 'GET',
            success: function (result) {
                $(".captcha").attr('src', result["image_url"]);
                $("#id_captcha_0").val(result["key"])
            }
        })
    });
});

附加:一個挺詳細的django-simple-captcha文檔

https://django-simple-captcha.readthedocs.io/en/latest/usage.html

 

注意:以上內容是個人使用的隨手記錄, 就是介紹了下簡單的使用

歡迎大家來吐槽,準備好瓜子飲料礦泉水,開整!!!

---------------------------------------------------------------------------------------

搞笑一則:能動手儘量別吵吵

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章