Django验证码库之django-simple-captcha

祝宏放
2023-12-01

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

 

注意:以上内容是个人使用的随手记录, 就是介绍了下简单的使用

欢迎大家来吐槽,准备好瓜子饮料矿泉水,开整!!!

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

搞笑一则:能动手尽量别吵吵

 类似资料: