我无法让我的烧瓶用户注册码正常工作,我做错了什么?



我几天前才开始学习Flask,所以我知道这可能不是你迄今为止看到的最好的代码,我现在的主要目标只是将我的数据放入数据库。 在下面找到我的代码

from flask import Flask, session, redirect, url_for, escape, request, render_template
from hashlib import md5
from dbConnect import connection
import MySQLdb
from MySQLdb import escape_string as thwart
import gc
app = Flask(__name__)
#database conn
conn = MySQLdb.connect(host="localhost", user="root", password="jccofficial", db="test")
cur = conn.cursor()
#registration handling
@app.route('/register/', methods=["GET","POST"])
def register_page():
return render_template('register.html')
try:
if request.method == "POST":
username  = request.form['username']
email = request.form['email']
password = request.form['password']

x = cur.execute("SELECT * FROM users WHERE username = (%s)",
(username))
if int(x) > 0:
flash("That username is already taken, please choose another")
return render_template('register.html', form=form)
else:
cur.execute("INSERT INTO users (username,email,password,)VALUES (%s,%s,%s)", (username, email, password))
conn.commit()
flash("Thanks for registering!")
cur.close()
conn.close()                
session['logged_in'] = True
session['username'] = username
return redirect(url_for('dashboard'))
return render_template("register.html", form=form)
except Exception as e:
return(str(e))

我已经通过手动将数据插入其中来设置并确认我的数据库正在工作。但是我不知道如何检查我的表单是否实际发布了输入。

正如 Klaus D. 在评论中指出的那样,您正在全局打开数据库连接,然后在函数中关闭它。

另一件事是在您的register_page函数中,您将立即返回一个模板return render_template('register.html')这意味着该函数中的所有其他代码都无法访问。它永远不会运行!您可能希望移动该返回或确保它仅基于某些条件运行。

最后,我看到您以明文形式存储密码。这可能对学习练习很有帮助,但以明文形式存储密码是一种很大的编程罪过!请参阅为什么要散列密码。即使是简单的哈希也不是那么好。您通常需要一个像hashlib.pbkdf2_hmac这样的强密钥派生函数。

最新更新