这是注册的# 用户注册 @app.route('/register', methods=['GET', 'POST']) def register(): form = RegisterForm(request.form) # 实例化表单类 if request.method == 'POST' and form.validate(): # 如果提交表单,并字段验证通过 # 获取字段内容 email = form.email.data username = form.username.data password = sha256_crypt.encrypt(str(form.password.data)) # 对密码进行加密 db = MysqlUtil() # 实例化数据库操作类 sql = "INSERT INTO users(email,username,password) \ VALUES ('%s', '%s', '%s')" % (email,username,password) # user表中插入记录 db.insert(sql) flash('您已注册成功,请先登录', 'success') # 闪存信息 return redirect(url_for('login')) # 跳转到登录页面 return render_template('register.html', form=form) # 渲染模板
时间: 2024-04-18 17:26:02 浏览: 24
根据你提供的注册代码,对密码进行了 sha256_crypt 加密,这是一个安全的做法。但是,根据你之前提到的 "ValueError: not a valid sha256_crypt hash" 错误,可以推测该错误可能与验证密码时出现的问题有关。
确保在注册过程中,你使用了相同的密码哈希算法进行加密和验证密码。在你的登录代码中,使用了 `sha256_crypt.verify()` 方法来验证密码。因此,在注册和登录过程中必须使用相同的密码哈希算法。
另外,请确保你的依赖项中包含正确版本的密码哈希库,例如 Werkzeug 库,以确保密码哈希算法的兼容性和正确性。如果使用不同版本或不同的库可能会导致哈希值无效的错误。
如果问题仍然存在,提供更多关于错误的详细信息,例如完整的错误堆栈跟踪信息和相关库的版本信息,将有助于更进一步地定位和解决问题。
相关问题
from flask import Flask, request import MySQLdb app = Flask(__name__) """ @app.route('/register.html', methods=['POST']) """ @app.route("/add/user") def submit(): if request.method == "GET": return render_template("C:/liwork/vue_proj/proj1/New System/templates/register.html") name = request.form.get['name'] email = request.form.get['email'] password = request.form.get['password'] # 连接MySQL数据库 conn = MySQLdb.connect(host='127.0.0.1', user='root', password='lj000902', db='customers') cursor = conn.cursor() # 插入数据 cursor.execute("INSERT INTO users(name, email, password) VALUES ('%s', '%s', '%s')", (name, email, password)) conn.commit() # 关闭连接 cursor.close() conn.close() return "添加成功" if __name__ == '__main__': app.run()这段代码错在哪里
这段代码是一个使用Flask框架和MySQLdb库的Python程序。它创建了一个名为app的Flask应用,并定义了一个路由函数submit(),它可以处理GET请求。如果请求是GET请求,它将渲染一个名为register.html的模板。如果请求是POST请求,它将从请求表单中获取名字、电子邮件和密码,并将它们存储到MySQL数据库中。
@app.route('/signup', methods=['GET', 'POST']) def signup(): if request.method == 'GET': uuid = session.get('uuid') datas = User.query.get(uuid) if datas: return redirect(url_for('index')) return render_template('account/register.html') elif request.method == 'POST': user = request.form.get('user') email = request.form.get('email') password = request.form.get('password') if User.query.filter(User.name == user).all(): return render_template('account/register.html', error='账号名已被注册') elif user == '' or password == '' or email == '': return render_template('account/register.html', error='输入不能为空') else: db.session.add(User(name=user, pwd=password,email=email)) db.session.commit() return redirect(url_for('login'))注释这段代码
这段代码是一个 Flask 中的视图函数,用于处理用户注册的请求。如果请求方法是 GET,它会检查用户是否已经登录,如果已经登录则直接重定向到首页,否则渲染一个名为 `register.html` 的 HTML 模板,显示注册页面。如果请求方法是 POST,它会从表单中获取用户输入的用户名、邮箱和密码,并检查用户名是否已经被注册过了。如果已经被注册过了,则重新渲染注册页面并显示错误信息。如果用户名未被注册且输入不为空,则将用户信息添加到数据库中,并重定向到登录页面。