flask框架实现登录注册操作

一、使用python连接数据库

        对登录和注册的前提是要对所产生的数据进行保存和解读,这时候我们就需要把数据保存到数据库里面,先要确保电脑里面拥有数据库,在新文件中引用SQL alchemy,单独在文件夹下面创建一个新的py文件,存放我们的连接代码,要记得名字和密码都要用自己设置的,不然会报错:

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

二、实现注册功能

        在这里我们要使用python中的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'))

四、项目实现

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
对于使用Flask框架实现注册功能,你可以按照以下步骤进行操作: 1. 导入Flask模块和相关的扩展模块: ```python from flask import Flask, render_template, request, redirect from flask_sqlalchemy import SQLAlchemy ``` 2. 创建Flask应用和配置数据库: ```python app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' db = SQLAlchemy(app) ``` 3. 创建用户模型类,并定义数据库表结构: ```python class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), unique=True, nullable=False) password = db.Column(db.String(80), nullable=False) ``` 4. 创建注册页面的路由和视图函数: ```python @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] # 创建用户对象 new_user = User(username=username, password=password) # 将用户对象添加到数据库中 db.session.add(new_user) db.session.commit() return redirect('/login') return render_template('register.html') ``` 5. 创建注册页面的HTML模板(register.html): ```html <!DOCTYPE html> <html> <head> <title>注册页面</title> </head> <body> <h1>注册页面</h1> <form method="POST" action="/register"> <label>用户名:</label> <input type="text" name="username"><br><br> <label>密码:</label> <input type="password" name="password"><br><br> <input type="submit" value="注册"> </form> </body> </html> ``` 以上代码实现了一个简单的注册功能,用户在注册页面输入用户名和密码后,点击注册按钮即可将用户信息保存到数据库中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值