一、使用python连接数据库

要记得名字和密码都要用自己设置的,不然会报错:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()
HOSTNAME = '127.0.0.1'
PORT = '3306'
USERNAME = 'root'
PASSWORD = '123456'
DATABASE = 'daimakuangjiashixian'
DB_URI = "mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8".format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URI

          再在主文件中引用本py文件

import config

二、实现注册功能

wtforms插件库,它能够做表单验证,将用户提交上来的数据进行验证是否符合系统要求,使用自己的代码进行约束和验证是否符合自己的约束,创建一个class,对注册列表进行创建,有对输入的密码进行确认:

class RegisterForm(wtforms.Form):
    email = wtforms.StringField( validators=[Email(message='邮箱格式错误')])
    capcha = wtforms.StringField(validators=[Length(min=4,max=4,message='验证码格式错误')])
    username = wtforms.StringField(validators=[Length(min=3,max=20,message='用户名长度必须在3到20个字符之间')])
    password = wtforms.StringField(validators=[Length(min=6,max=20,message='密码长度必须在6到20个字符之间')])
    password_confirm = wtforms.StringField(validators=[EqualTo('password',message='两次输入的密码不一致')])

        我们使用get的请求方法,去读取前端得到的数据,再以此存入我们的数据库,若表单读取成功,我们将进行下一步登录,若没有成功,则我们再次回到此页面,重新来:

def register():
    # 如果请求方法为GET,则返回注册页面
    if request.method == 'GET':
        return render_template('register.html')
    else:
        form = RegisterForm(request.form)
        # 如果表单验证成功,则创建用户模型,并将数据添加到数据库
        if form.validate():
            email = form.email.data
            username = form.username.data
            password = form.password.data
            user = UserModel(email=email, username=username, password=generate_password_hash(password))
            db.session.add(user)
            db.session.commit()
            # 注册成功后,跳转到登录页面
            return redirect(url_for('auth.login'))
        else:
            # 如果表单验证失败,则打印错误信息,并跳转到注册页面
            print(form.errors)
            return redirect(url_for('auth.register'))

        我们在创建一个新的model文件,写入我们存入数据库时需要的代码: 

class UserModel(db.Model):
    # 表名
    __tablename__ = 'user'
    # 主键
    id = db.Column(db.Integer, primary_key=True,autoincrement=True)
    # 用户名
    username = db.Column(db.String(100), nullable=False)
    # 密码
    password = db.Column(db.String(200), nullable=False)
    # 邮箱
    email = db.Column(db.String(100), nullable=False, unique=True)
    # 加入时间
    join_time = db.Column(db.DateTime, default=datetime.now)

三、实现登录功能

        做完注册的功能,登录的功能就不会太难,只是去读取存入数据库的代码是否为正确的,这里我们也是用的是get方法,使用get在数据库中查找数据是否存在,登录成功后浏览器会进行保存账号密码,对账户的密码使用session函数进行加密,若没有登录成功将会继续留在本页面:

def login():
    if request.method == 'GET':
        return render_template('login.html')
    else:
        form = LoginForm(request.form)
        if form.validate():
            email = form.email.data
            password = form.password.data
            user = UserModel.query.filter_by(email=email).first()
            if not user:
                print('用户不存在')
                return redirect(url_for('auth.login'))
            if check_password_hash(user.password, password):
                session['user_id'] = user.id
                return redirect('/')
            else:
                print('密码错误')
                return redirect(url_for('auth.login'))
        else:
            print(form.errors)
            return redirect(url_for('auth.login'))

四、项目实现

flask vue mysql登录验证 flask实现登录注册_flask

flask vue mysql登录验证 flask实现登录注册_android_02

flask vue mysql登录验证 flask实现登录注册_数据库_03