Django6 图形验证码

pip install -i https://pypi.mirrors.ustc.edu.cn/simple/ django-simple-captcha

settings

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'App',
    'captcha'  # 安装应用
]

# 图形验证码配置
# 证码设置
CAPTCHA_IMAGESIZE = (8,45)   # 设置captcha图片大小

CAPTCHA_LENGTH =4   #字符个数
CAPTCHA_TIMEOUT =1  #超时(minutes)*

# 输出格式:输入框验证码图片隐藏域•
# '%(image)s %(hidden_field)s %(text_field)s'
CAPTCHA_OUTPUT_FORMAT ='%(text_field)s %(image)s %(hidden_field)s'
CAPTCHA_NOISE_FUNCTIONS =(
    'captcha.helpers.noise_null',
    'captcha.helpers.noise_arcs',
    'captcha.helpers.noise_dots',
)
CAPTCHA_CHALLENGE_FUNCT =  'captcha.helpers.math_challenge'

urls

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include("App.urls")),
    path('captcha/',include("captcha.urls"))
]

App.urls

from django.urls import path
from App import views

app_name = "App"
urlpatterns = [
    path("cap/",views.handle_captcha, name='cap'),
]

App.views

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.

from App.forms import LoginForm


def handle_captcha(request):
    if request.method == "POST":
        form = LoginForm(request.POST,request)
        print(form)
        if form.is_valid():
            return HttpResponse("验证通过")
        else:
            return render(request, 'verifycode.html', locals())
    else:
        form = LoginForm()
        return render(request,'verifycode.html',locals())

App.forms

from django import forms
from captcha.fields import CaptchaField

class LoginForm(forms.Form):
    captcha = CaptchaField()  # 验证码字段

verifycode.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="{% url 'App:cap' %}" method="post">
    {% csrf_token %}
    {{ form.captcha }} {{ form.captcha.errors }} <br>
    <input type="submit">
</form>
</body>
</html>
<script src="https://cdn.bootcss.com/jquery/1.12.3/jquery.min.js"></script>
<script>
    //点击刷新验证码
    $(function () {
        $('.captcha').css({
            'cursor': 'pointer'
        });
        // ajax刷新
        $('.captcha').click(function () {
            console.log('click');
            $.get("{% url 'captcha-refresh' %}",
                function (result) {
                    $('.captcha').attr('src', result['image_url']);
                    $('#id_captcha_0').val(result['key'])
                });
        });
    })
</script>

连接数据库,创建图形认证库

python manage.py makemigrations
python manage.py migrate

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值