zoukankan      html  css  js  c++  java
  • python-Web-django-邮箱登陆

    setting:

    # 发送邮箱
    EMAIL_HOST = 'smtp.163.com'
    EMAIL_PORT = 465
    EMAIL_HOST_USER = '666666@163.com'
    
    #EMAIL_HOST_PASSWORD = '666666'
    EMAIL_HOST_PASSWORD = '666666'
    EMAIL_USE_SSL = True

    until:

    import random
    def range_num(num):
        # 定义一个种子,从这里面随机拿出一个值,可以是字母
        seeds = "1234567890"
        # 定义一个空列表,每次循环,将拿到的值,加入列表
        random_num = []
        # choice函数:每次从seeds拿一个值,加入列表
        for i in range(num):
            random_num.append(random.choice(seeds))
        # 将列表里的值,变成四位字符串
        return "" . join(random_num)

    views:

    from django.shortcuts import render,HttpResponse,redirect
    from app01.models import *
    from django.core.mail import send_mail
    from my_pro import settings
    import threading
    import json
    from app01.utils.function import range_num
    
    def getpwd(request):
        '''忘记密码'''
        res = {'s':None,'info':None}
        if request.method == 'POST':
            ''''''
            try:
                username = request.POST.get('username')
                email = request.POST.get('email')
                member_obj = Member.objects.filter(member_name=username,member_email=email).first()
                if member_obj:
                    '''发送邮件'''
                    code = range_num(4)
                    request.session['email_code'] = code
                    liuyan = '用户{}获得密钥{}!如果非本人操作!请及时联系本站!'.format(username,code)
                    tuple1 = ('邮箱密码查找信息:',
                              liuyan,
                              settings.EMAIL_HOST_USER,
                              ['666666@qq.com',])
                    t = threading.Thread(target=send_mail,args=tuple1)
                    t.start()
                    print(liuyan)
                    # send_mail('邮箱密码查找信息:',
                    #           liuyan,
                    #           settings.EMAIL_HOST_USER,
                    #         ['666666@qq.com'])
                    print(111)
                    res['s'] = 1
                    res['info'] = '邮箱发送成功!'
                    return HttpResponse(json.dumps(res))
                else:
                    res['s'] = 0
                    res['info'] = '邮箱发送失败!'
                    return HttpResponse(json.dumps(res))
            except EOFError as e:
                print(e)
                res['s'] = 0
                res['info'] = '输入错误'
                return HttpResponse(json.dumps(res))
    
    
        return render(request,'app01_get_pwd.html')
    
    def repwd(request):
        '''更新密码'''
        res = {'s': None, 'info': None}
        if request.method == 'POST':
            ''''''
            try:
                username = request.POST.get('username')
                email = request.POST.get('email')
                pwd = request.POST.get('pwd')
                repwd = request.POST.get('repwd')
                if pwd == repwd:
                    Member.objects.filter(member_name=username,member_email=email).first().update(member_pwd=pwd)
                    res['s'] = 1
                    res['info'] = '更新密码成功!'
                    del request.session['email_code']
                else:
                    res['s'] = 0
                    res['info'] = '密码错误!'
            except:
                res['s'] = 0
                res['info'] = '输入错误1'
        return HttpResponse(json.dumps(res))

    html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>忘记密码</title>
    </head>
    <body>
    <a href="{% url 'app01:index' %}">首页</a>
    <a href="{% url 'app01:login' %}">登陆页面</a>
    <form action="#">
        {% csrf_token %}
        账号:<input type="text" name="username"><br>
        邮箱:<input type="text" name="email">
        <input type="button" value="发送邮件" id="sendemail"><br>
        <div class="maina">
        </div>
    
    </form>
    
    </body>
    </html>
    <script src="/static/js/jquery.min.js"></script>
    <script src="/static/layer/layer.js"></script>
    <script>
    
        $(document).on('click','#sendemail',function () {
            $.post('{% url 'app01:getpwd' %}', $('form').serialize(), function (data) {
    
                if (data['s'] == 1) {
                        layer.msg(data['info']);
                        // 更新密码页面
                        var html1 = "新密码:<input type='text' name='pwd'><br>确认密码:<input type='text' name='repwd'> <input type='button' value='更改密码'> ";
                        $(".maina").html(html1);
                    } else {
                        //登陆失败
                        layer.msg(data['info']);
                    }
                    return false;
                    },'json');
        });
    
        $(document).on('click','#repwd',function () {
            $.post('{% url 'app01:repwd' %}', $('form').serialize(), function (data) {
    
                if (data['s'] == 1) {
                        layer.msg(data['info']);
                    // 跳转主页面
                        location.href="{% url 'app01:index' %}";
                    } else {
                        //更改失败
                        layer.msg(data['info']);
                    }
                    return false;
                    },'json');
        });
    </script>
  • 相关阅读:
    Silverlight第三方控件收集
    我们三十以后才明白
    修复编译Silverlight&quot;不能找到AppManifest.xaml&rdquo;的错误
    Android消息通知
    理解和认识udev
    QT进度条
    WARNING: Application does not specify an API level requirement!
    Linux设备驱动中的异步通知与异步I/O
    Qtopia2.2.0 的配置和交叉编译
    Android Menus
  • 原文地址:https://www.cnblogs.com/person1-0-1/p/11323231.html
Copyright © 2011-2022 走看看