我已經用谷歌搜索并搜索了答案,但我似乎找不到答案。
如何以不區分大小寫的方式使 mongoengine 檢查唯一值?因為現在如果我使用“[email protected]”創建一個條目,它可以讓我使用“[email protected]”創建一個新條目。我該如何以干凈的方式解決這個問題?(不使用 .lower)
模型.py:
from flask_mongoengine import MongoEngine
db = MongoEngine()
class User(db.Document):
email = db.EmailField(
unique = True,
required = True
)
username = db.StringField(
unique = True,
required = True
)
password = db.StringField(
required = True
)
def to_json(self):
return {
'email': self.email,
'username': self.username,
'password': self.password
}
驗證碼:
from flask import Blueprint, render_template, request, flash, redirect
from werkzeug.security import generate_password_hash
from models import User, db
import re
auth = Blueprint('auth', __name__)
@auth.route('/signup', methods = ('GET', 'POST'))
def signup():
if request.method == 'POST':
email = request.form['email']
username = request.form['username']
password = generate_password_hash(request.form['password'])
user = User(
email = email,
username = username,
password = password
)
try:
user.save()
flash(f'Account successfully created.', 'success')
except Exception as e:
flash(f'Email or username already in use.', 'error')
# return "Error \n %s" % (e)
return render_template('signup.html')
uj5u.com熱心網友回復:
您可以通過在元字典中宣告索引規范來使電子郵件欄位上的唯一索引不區分大小寫。
class User(db.Document):
email = db.EmailField(
required = True
)
username = db.StringField(
unique = True,
required = True
)
password = db.StringField(
required = True
)
meta = {
"indexes": [
{
"fields": ["email"],
"unique": True,
"collation": { "locale": "en", "strength": 2 } }
}
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/493519.html
上一篇:將資料從Flask/Python加載到HTMLtextarea
下一篇:如何讓下劃線使用Swift?
