Django—图形验证码

  1. 配置


    $ pip install django-simple-captcha
    # 如果安装有依赖库问题,请执⾏下⾯的安装
    apt-get -y install libz-dev libjpeg-dev libfreetype6-dev python-dev
    
    # settings.py
    
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'App02',
        '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.random_char_challenge'
    
    
    # 最后要迁移数据库:
    # python manage.py migrate

     

  2. 实现


    from django import forms
    from captcha.fields import CaptchaField
    class LoginForm(forms.Form):
        captcha = CaptchaField()  # 验证码字段
    def handle_captcha(request):
        if request.method == "POST":
            form = LoginForm(request.POST,request)
            print(form)
            if form.is_valid():
                print("验证通过")
                return HttpResponse("验证通过")
            else:
                return render(request, 'app/verifycode.html', locals())
        else:
            form = LoginForm()
            return render(request,'app/verifycode.html',locals())
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="{% url 'App:yzm' %}" method="post">
        {% csrf_token %}
        <input type="text" name="yzm"> <img src="{{ image_url }}" alt=""> <br>
        <input type="hidden" name="code" value="{{ new_key }}">
        <input type="submit">
    </form>
    
    </body>
    </html>

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用第三方库django-simple-captcha来实现AdminLTE图形验证码的功能。具体实现方法可以参考以下步骤: 1. 安装django-simple-captcha库 可以使用pip命令进行安装: ``` pip install django-simple-captcha ``` 2. 在settings.py中添加captcha应用 在INSTALLED_APPS中添加captcha应用: ``` INSTALLED_APPS = [ ... 'captcha', ... ] ``` 3. 配置captcha应用 在settings.py中添加captcha应用的配置: ``` CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.random_char_challenge' CAPTCHA_LENGTH = 4 CAPTCHA_FONT_SIZE = 30 CAPTCHA_TIMEOUT = 5 ``` 其中,CAPTCHA_CHALLENGE_FUNCT指定验证码生成函数,CAPTCHA_LENGTH指定验证码长度,CAPTCHA_FONT_SIZE指定验证码字体大小,CAPTCHA_TIMEOUT指定验证码过期时间。 4. 在表单中添加captcha字段 在表单中添加captcha字段: ``` from captcha.fields import CaptchaField class MyForm(forms.Form): ... captcha = CaptchaField() ... ``` 5. 在模板中显示captcha字段 在模板中使用form.captcha来显示captcha字段: ``` {% load captcha %} ... <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Submit</button> </form> ... {% captcha_script %} ``` 6. 验证captcha字段 在视图中验证captcha字段: ``` from captcha.fields import CaptchaField def my_view(request): if request.method == 'POST': form = MyForm(request.POST) if form.is_valid(): # 验证码验证通过 ... else: # 验证码验证失败 ... else: form = MyForm() return render(request, 'my_template.html', {'form': form}) ``` 至于AdminLTE的相关内容,可以参考官方文档进行学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值