Как обработать ошибку при регистрации на Python Flask?
Есть проект который пишу на Flask
repository - хранит в себе таблицы
service - логика
В папке service есть файл CreateNewUser.py
from repository.model import db, Users
# Function for create new User and Add To a database
def CreateNewUser(login, password, email, err):
NewUser = Users(login = login, password = password, email = email, role = 1)
try:
db.session.add(NewUser)
db.session.commit()
except:
db.session.rollback()
err = 'Ошибка: Такой пользователь уже существует!'
В main.py вызывается следующим образом:
@app.route('/registrequest', methods = ['POST', 'GET'])
def registrequest():
if request.method == 'POST':
login = request.form.get('login')
password = request.form.get('password')
email = request.form.get('email')
err = ''
CreateNewUser(login, password, email, err)
if len(err) != 0:
return err
return redirect('/')
По моей задумке, должен просто появиться шаблон с Текстом из err. Но понимаю, что
if len(err) != 0:
return err
этот err не получает тот текст, что записан в CreateNewUser.py.
Как обработать эту ошибку, чтобы просто в шаблон вывелся текст " Ошибка: Пользователь уже существует " ?
Ответы (1 шт):
Автор решения: askarr
→ Ссылка
Можно сделать всё гораздо проще:
from repository.model import db, Users
# Function for create new User and Add To a database
def CreateNewUser(login, password, email):
NewUser = Users(login = login, password = password, email = email, role = 1)
try:
db.session.add(NewUser)
db.session.commit()
except:
db.session.rollback()
raise ValueError("Ошибка: Такой пользователь уже существует!")
и
@app.route('/registrequest', methods = ['POST', 'GET'])
def registrequest():
if request.method == 'POST':
login = request.form.get('login')
password = request.form.get('password')
email = request.form.get('email')
try:
CreateNewUser(login, password, email)
except ValueError as e:
return e
return redirect('/')