Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » [РЕШЕНО] flask wtforms datefield требует валидацию по-умолчанию? [RSS Feed]

#1 Фев. 24, 2015 10:21:57

Astronaut
От: Earth
Зарегистрирован: 2014-12-06
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

[РЕШЕНО] flask wtforms datefield требует валидацию по-умолчанию?

Здравствуйте.
Суть вопроса такова:
Имеется forms.py

class MyForm(Form):
	name = StringField(u'Автор')
	post = StringField(u'Пост')
	date = DateField(u'Дата написания')

views.py
@app.route('/submit', methods=('POST', 'GET'))
def submit():
	form = MyForm()
	if validate_on_submit():
		return redirect('/')
	return render_template('submit.html', form=form)

models.py
class User(Base):
	__tablename__ = 'users'
	id = Column(Integer, primary_key=True)
	name = Column(Unicode(50))
	post = relationship("Post", backref='users')
	def __init__(self, name):
		self.name = name
class Post(Base):
	__tablename__ = 'posts'
	id = Column(Integer, primary_key=True)
	title = Column(Unicode)
	date = Column(Date)
	user_id = Column(Integer, ForeignKey('users.id'))
	def __init__(self, title):
		self.title = title

Собственно, если я не заполняю поля на странице (оставляю всё пустым), то выполняется:
return render_template('submit.html', form=form)
Если поле date закомментировать, и оставить только StringField в forms.py (и в шаблоне submit.hmtl), то при отправке пустых полей происходит:
return redirect('/')
В документации на DateField сказано следующее:
class wtforms.fields.DateField(default field arguments, format='%Y-%m-%d')
где default field arguments:
__init__(label=None, validators=None, filters=(), description=u'', id=None, default=None, widget=None, _form=None, _name=None, _prefix=u'', _translations=None, _meta=None)
Следовательно validators отсутсвуют, но по факту они есть, или я чего-то не понимаю ?
Собственно мне необходимо некоторые поля проверять, а вот дата не обязательная для заполнения. Как обойти это ?

Отредактировано Astronaut (Фев. 24, 2015 22:34:18)

Офлайн

#2 Фев. 24, 2015 13:40:13

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

[РЕШЕНО] flask wtforms datefield требует валидацию по-умолчанию?

попробуйте явно указать валидатор Optional

Офлайн

#3 Фев. 24, 2015 22:33:52

Astronaut
От: Earth
Зарегистрирован: 2014-12-06
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

[РЕШЕНО] flask wtforms datefield требует валидацию по-умолчанию?

sander
попробуйте явно указать валидатор Optional
Супер!!! Спасибо!!! Работает.
PS: Зря весь ман не “выкурил”

Офлайн

#4 Фев. 24, 2015 22:37:23

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

[РЕШЕНО] flask wtforms datefield требует валидацию по-умолчанию?

Если хотите реабилитироваться полностью, то почитайте про WTForms-alchemy

Офлайн

#5 Фев. 25, 2015 08:58:52

Astronaut
От: Earth
Зарегистрирован: 2014-12-06
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

[РЕШЕНО] flask wtforms datefield требует валидацию по-умолчанию?

4kpt_III
Если хотите реабилитироваться полностью, то почитайте про WTForms-alchemy
Ок, спасибо за наводку

Офлайн

  • Начало
  • » Web
  • » [РЕШЕНО] flask wtforms datefield требует валидацию по-умолчанию?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version