首页 > 其他 > 详细

django验证码界面和视图函数 setting

时间:2020-02-21 20:02:10      阅读:87      评论:0      收藏:0      [点我收藏+]

settings.py

CAPTCHA_OUTPUT_FORMAT = %(text_field)s %(hidden_field)s %(image)s

CAPTCHA_NOISE_FUNCTIONS = (
    # 设置样式
    captcha.helpers.noise_null,
    # 设置干扰线
    captcha.helpers.noise_arcs,
    # 设置干扰点
    captcha.helpers.noise_dots,
)

# 图片大小
CAPTCHA_IMAGE_SIZE = (100, 25)
# 设置图片背景色
CAPTCHA_BACKGROUND_COLOR = #ffffff
# 图片中的文字为随机数字表达式
CAPTCHA_CHALLENGE_FUNCT = captcha.helpers.math_challenge
# 设置字符的个数
CAPTCHA_LENGTH = 4
# 设置超时
CAPTCHA_TIMEOUT = 1

views.py

from django.shortcuts import render
from django.contrib.auth.models import User
from django.contrib.auth import login, authenticate
from .forms import CaptchaTestForm
from django.http import JsonResponse
from captcha.models import CaptchaStore
# Create your views here.

def loginView(request):
    if request.method == POST:
        form = CaptchaTestForm(request.POST)
        if form.is_valid():
            u = form.cleaned_data[username]
            p = form.cleaned_data[password]
            if User.objects.filter(username=u):
                user = authenticate(username=u, password=p)
                if user:
                    if user.is_active:
                        login(request, user)
                        tips = 登录成功
                else:
                    tips = 用户名或密码错误
            else:
                tips = 用户不存在,请注册
    else:
        form = CaptchaTestForm()
    return render(request, user.html, locals())



def ajax_val(request):
    if request.is_ajax():
        r = request.GET[response]
        h = request.GET[hashkey]
        cs = CaptchaStore.objects.filter(response=r, hashkey=h)
        if cs:
            json_data = {status: 1}
        else:
            json_data = {status: 0}
        return JsonResponse(json_data)
    else:
        json_data = {status: 0}
        return JsonResponse(json_data)

user.htm

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <link rel="stylesheet" href="https://unpkg.com/mobi.css/dist/mobi.min.css">
</head>
<body>
<div class="flex-center">
    <div class="container">
        <div class="flex-center">
            <div class="unit-1-2 unit-1-on-mobile">
                <h1>Mydjango Verification</h1>
                {% if tips %}
                    <div>{{ tips }}</div>
                {% endif %}
                <form action="" class="form" method="post">
                    {% csrf_token %}
                    <div>用户名:{{ form.username }}</div>
                    <div>密码:{{ form.password }}</div>
                    <div>验证码:{{ form.captcha }}</div>
                    <button type="submit" class="btn btn-primary btn-block">确定</button>
                </form>
            </div>
        </div>
    </div>
</div>

<script>
    $(.captcha).click(function () {
        console.log(click);
        $.getJSON("/captcha/refresh/", function (result) {
            $(.captcha).attr(src, result[image_url]);
            $(#id_captcha_0).val(result[key])
        });
    });

    $(#id_captcha_1).blur(function () {
        json_data = {
            response: $(#id_captcha_1).val(),
            hashkey: $(#id_captcha_0).val()
        }
        $.getJSON(/ajax_val, json_data, function (data) {
            $(#captcha_status).remove()
            if (data[status]) {
                $(#id_captcha_1).after(<span id="captcha_status">验证码正确</span>)
            } else {
                $(#id_captcha_1).after(<span id="captcha_status">验证码错误</span>)
            }
        })
    })
</script>
</body>
</html>

forms.py

from django import forms
from captcha.fields import CaptchaField

class CaptchaTestForm(forms.Form):
    username = forms.CharField(label=用户名)
    password = forms.CharField(label=密码, widget=forms.PasswordInput)
    captcha = CaptchaField()

 

django验证码界面和视图函数 setting

原文:https://www.cnblogs.com/yellowhat/p/12342276.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!