![](/img/trans.png)
[英]I am working on python django and have a registration form there are fields like username email password want to check if exists
[英]How can I validate email and username on my registration form. I am using flask and mysqlalchemy
這是我的路線,它很有用,問題是我可以多次注冊同一個用戶:
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
name = request.form.get('name')
username = request.form.get('username')
email = request.form.get('email')
password = request.form.get('password')
confirm = request.form.get('confirm')
secure_password = sha256_crypt.encrypt(str(password))
if password == confirm:
db.execute('INSERT INTO users(name, username, email, password) VALUES(:name,:username,:email,:password)',
{'name':name,'username':username,'email':email,'password':secure_password})
db.commit()
flash("you are registerd and you can login","success")
return redirect(url_for('login'))
else:
flash("password does not match","danger")
return render_template('register.html')
return render_template('register.html')
查詢您的數據庫以查看用戶名或電子郵件是否已被其他用戶使用。 假設您的數據庫名為users
,以下是驗證電子郵件或用戶名的方法:
email = request.form.get("email")
user = users.query.filter(users.email==email).first()
if user != None: # the query has returned a user
flash("Please use a different email.")
return render_template("register.html")
對您的用戶名、姓名或任何您想要獨一無二的內容執行相同的操作。
將unique=True
添加到需要唯一的數據庫模型列可能是個好主意,以確保即使您的驗證沒有發現錯誤,也不可能在數據庫中輸入重復項.
@auth.route('/signup', methods=['POST'])
def signup_post():
email = request.form.get('email')
firstname = request.form.get('first_name')
lastname = request.form.get('last_name')
phone = request.form.get('phone')
password = request.form.get('password')
re_password = request.form.get('password1')
created_date = date.today()
if re_password != password:
flash("Not same password, please check again!")
else:
user = User.query.filter_by(
email=email).first() # if this returns a user, then the email already exists in database
if user: # if a user is found, we want to redirect back to signup page so user can try again
return redirect(url_for('auth.signup'))
else:
# create a new user with the form data. Hash the password so the plaintext version isn't saved.
new_user = User(email=email, phone=phone,created_date=created_date, firstname=firstname, lastname=lastname, password=generate_password_hash(password, method='sha256'))
# add the new user to the database
db.session.add(new_user)
db.session.commit()
return redirect(url_for('auth.login'))
return redirect(url_for('auth.login'))
所以如果你想檢查用戶名,你可以使用代碼
user = User.query.filter_by(
username=username).first()
if user: # if a user is found, we want to redirect back to signup page so user can try again
return redirect(url_for('auth.signup'))
else:
CONTINUE TODO SOMETHING
我認為你應該為 SQLAlchemy 制作短代碼
db = SQLAlchemy()
和用戶Flask-Login ,並創建模型。
class User(UserMixin, db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True) # primary keys are required by SQLAlchemy
firstname = db.Column(db.String(30))
lastname = db.Column(db.String(30))
email = db.Column(db.String(100), unique=True)
phone = db.Column(db.String(10))
password = db.Column(db.String(20))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.