У меня есть класс User (), который выдает исключения, когда атрибуты установлены неправильно. В настоящее время я передаю исключения из моделей через контроллер в шаблоны, по сути перехватывая исключения два раза для каждой переменной.
Это правильный способ сделать это? Есть ли лучший (но все же простой) способ? Я предпочитаю не использовать никаких сторонних обработчиков ошибок или форм из-за обширных запросов к базе данных, которые мы уже имеем в наших классах.
Кроме того, как я могу "остановить" цепочку обработки в классе, если одно из значений недопустимо? Есть ли что-то вроде синтаксиса "перерыв" или что-то?
Спасибо.
>>> u = User()
>>> u.name = 'Jason Mendez'
>>> u.password = '1234'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "topic/model/user.py", line 79, in password
return self._password
ValueError: Your password must be greater than 6 characters
В моем контроллере "регистр" у меня есть:
class RegisterController(BaseController):
def index(self):
if request.POST:
c.errors = {}
u = User()
try:
u.name = c.name = request.POST['name']
except ValueError, error:
c.errors['name'] = error
try:
u.email = c.email = request.POST['email']
except ValueError, error:
c.errors['email'] = error
try:
u.password = c.password = request.POST['password']
except ValueError, error:
c.errors['password'] = error
try:
u.commit()
except ValueError, error:
pass
return render('/register.mako')