作业(flask-登录注册时发送邮件)

业务逻辑:

定义发送邮件函数:

def send_mail(send_to,filename,**kwargs):
    mail=Mail(app)
    with app.app_context():
        msg=Message(
            subject='测试',
            recipients=send_to,
            sender='[email protected]',
            html=render_template(filename+'.html',
                                 info=kwargs)
        )
        mail.send(msg)
注册:
@app.route('/register/',methods=['GET','POST'])
def register():
    if request.method=='POST':
        username = request.form.get('username')
        password=request.form.get('password')
        for user in users:
            if user['username'] == username:
                flash('用户已存在,请重试!')
                return redirect(url_for('register'))
        else:
            users.append({'username':username,'password':password})
            send_mail(send_to=['[email protected]'], filename='reg_msg', user=username)
            flash('注册成功,请登录!')
            return redirect(url_for('login'))
    else:
        return render_template('register.html')
登录:
@app.route('/login/',methods=['GET','POST'])
def login():
    if request.method=='POST':
        username=request.form.get('username')
        password=request.form.get('password')

        for user in users:
            if user['username']==username and user['password']==password:
                session['user']=username
                # 获取客户端的主机名
                hostname=request.host
                # 获取客户端的ip地址
                user_addr = request.remote_addr
                # 获取当前时间
                login_time = datetime.strftime(datetime.now(),'%Y-%m-%d,%H:%M:%S')
                send_mail(send_to=['[email protected]'],filename='log_msg',user=username,addr=user_addr,log_time=login_time,host=hostname)
                flash('用户登录成功')
                return redirect(url_for('index'))
        else:
            flash('用户或密码错误,登录失败,请重试!')
            return redirect(url_for('login'))
    else:
        return render_template('login.html')

页面逻辑:

基模板:
{% extends 'bootstrap/base.html' %}

{% block style %}
{{ super()  }}

    

{% endblock %}



{% block navbar %}



{% for item in get_flashed_messages() %}

    
{% endfor %}
{% endblock %}

注册页面:
{% extends 'base.html' %}
{% block title %}注册{% endblock %}

{% block content %}

    

注册 已有帐号登录

{% endblock %}
登录页面:
{% extends 'base.html' %}

{% block title %}
登录页面
{% endblock %}

{% block content %}

登录没有帐号?注册

{% endblock %}
邮件页面:

注册:

{{ info.user }}注册成功

登录:

主机名:{{ info.host }},IP:{{ info.addr }}在{{ info.log_time }}时间登录{{ info.user }}用户

你可能感兴趣的:(作业(flask-登录注册时发送邮件))