• django--之登录表单提交


    前端代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录</title>
        <script src="/static/jquery-3.3.1.min.js"></script>
        <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.css">
    </head>
    <body>
    <div class="container-fluid box">
        <h1></h1>
        <div class="row">
            <div class="col-md-4 col-md-offset-4">
                <div class="panel panel-primary">
                    <div class="panel-heading">
                        <h3 class="panel-title">Loging</h3>
                    </div>
                    <div class="panel-body">
                        {# label for="name"  如果指定某个id,这样点击这个label,焦点会到对应的控件上         #}
                        <form>
                            {% csrf_token %}
                            <div class="form-group">
                                <label for="name">用户名</label>
                                <input type="text" id="name" class="form-control">
                            </div>
                            <div class="form-group">
                                <label for="pwd">密码</label>
                                <input type="password" id="pwd" class="form-control">
                            </div>
                            <div class="form-group">
                                <label for="valid_code">验证码</label>
                                <div class="row">
                                    <div class="col-md-6">
                                        <input type="text" id="valid_code" class="form-control">
                                    </div>
                                    <img height="35" width="260" src="/get_valid_code/" alt="">
                                </div>
                            </div>
                            {#                        <input type="button" value="登录" class="btn btn-primary pull-right" id="btn">#}
                        </form>
                        <input type="button" value="登录" class="btn btn-primary pull-right" id="btn">
                    </div>
                </div>
            </div>
        </div>
    </div>
    </body>
    <script>
        $('#btn').hover(function () {
            var valid_code = $('#valid_code').val();
            if (valid_code.length == 0) {
                alert('验证码不能为空')
            } else {
                $('#btn').click(function () {
    
                    var user_info = {
                        'name': $('#name').val(),
                        'pwd': $('#pwd').val(),
                        'valid_code': $('#valid_code').val(),
                        'csrfmiddlewaretoken': $("[name = 'csrfmiddlewaretoken']").val(),
                        {#'csrfmiddlewaretoken': '{{ csrf_token }}',#}  --csrf_token的第二种写法
                    };
                    {#var pos = JSON.stringify(user_info);#}
                    var pos = user_info;
                    $.ajax({
                        url: '/login/',
                        type: 'post',
                        data: pos,
                        success: function (data) {
                            if (data==200){
                                 window.location.href = "/index/"
                            }else {
                                alert(data)
                            }
                        }
                    })
                });
            }
    
        })
    </script>
    </html>

    后台代码

    import random
    from PIL import Image, ImageDraw, ImageFont
    from io import BytesIO
    import json
    
    
    def get_random_color():
        return (
            random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)
        )
    
    
    def get_random_code():
        code = ''
        for i in range(5):
            num = random.randint(0, 9)  # 0到9的随机数
            upper_num = random.randint(65, 90)  # 大写字母a-z对应的ASCII码
            lower_num = random.randint(97, 122)  # 小写字母a-z对应的ASCII码
            upper_letter = chr(upper_num)
            lower_letter = chr(lower_num)
            code_list = [num, upper_letter, lower_letter]
            x = random.sample(code_list, 1)[0]  # 随机生成一个字符串
            code += str(x)
        return code
    
    
    verification_code = get_random_code()
    
    
    def get_valid_code(request):
            img = Image.new('RGB', (320, 35), color=get_random_color())
            img_draw = ImageDraw.Draw(img)
            font = ImageFont.truetype('static/font/ss.TTF', size=25)
            img_draw.text((100, 0), verification_code, get_random_color(), font=font)
            f = BytesIO()
            img.save(f, 'png')
            data = f.getvalue()
            return HttpResponse(data)
    
    
    def login(request):
        if request.method == "GET":
            return render(request, 'login.html')
        elif request.method == 'POST':
            name = request.POST.get('name')
            pwd = request.POST.get('pwd')
            valid_code = request.POST.get('valid_code')
            print(verification_code)
            print(name, pwd, valid_code)
            if valid_code.lower() == verification_code.lower():
                if name == 'zjh' and pwd == '123':
                    return HttpResponse(200)
                return HttpResponse('用户或密码错误')
            return HttpResponse('验证码错误')
    -----https://www.cnblogs.com/seven-007/p/8034043.html
  • 相关阅读:
    算法笔记 --- Selection Sort
    算法笔记 --- Radix Sort
    算法笔记 --- Quick Sort
    算法笔记 --- Merge Sort
    算法笔记 --- Insertion Sort
    算法笔记 --- Heap Sort
    算法笔记 --- Counting Sort
    算法笔记 --- Bubble Sort
    算法笔记 --- Tree Travers
    javaweb_JDBC
  • 原文地址:https://www.cnblogs.com/zhaijihai/p/10029141.html
Copyright © 2020-2023  润新知