def get(self): form = self.get_form(f.register_form) form_error_message = f.FormContainer() args = { 'form': form, 'form_error_message': form_error_message, } self.jinja_render('dev_register.html', **args)
def validate(self, form, form_define): form_error_message = f.FormContainer() error = False for field, validator in form_define.iteritems(): if error: #fail fast break if field == '_form': continue form_error_message[field] = validator(form[field]) error = error or bool(form_error_message[field]) if not error and '_form' in form_define: form_error_message['form'] = form_define['_form'](form) error = error or bool(form_error_message['form']) return error, form_error_message
def get(self, bid, cid): chapter = db.query(m.Chapter).\ filter_by(id=cid, book_id=bid).first() if chapter is None: raise tornado.web.HTTPError(404) book = db.query(m.Book).filter_by(id=bid).first() args = dict(chapter=chapter, book=book) paging = f.FormContainer() index = book.chapters.index(chapter) if index > 0: paging.pre = book.chapters[index - 1] if index < len(book.chapters) - 1: paging.post = book.chapters[index + 1] args['paging'] = paging self.jinja_render("dev_chapter.html", **args)
def get(self, bid): book = db.query(m.Book).filter_by(id=bid).first() if book is None: raise tornado.web.HTTPError(404) cid = self.get_safe_argument('cid', int) if cid is not None: chapter = db.query(m.Chapter).\ filter_by(id=cid, book_id=bid).first() if chapter is None: raise tornado.web.HTTPError(404) form = self.get_form(f.chapter_form, chapter) form.cid = cid else: form = self.get_form(f.chapter_form) form_error_message = f.FormContainer() args = dict(bid=bid, form=form, form_error_message=form_error_message) self.jinja_render('dev_edit_chapter', **args)
def get(self): """ 添加新的书或者修改存在的书的信息 """ bid = self.get_safe_argument('bid', int) if bid is None: form = self.get_form(f.edit_book_form) else: #TODO handler exception. bid maybe illegal book = db.query(m.Book).filter_by(id=bid).first() if not book: raise tornado.web.HTTPError(404) form = self.get_form(f.edit_book_form, book) form.bid = bid args = {'form': form, 'form_error_message ': f.FormContainer()} self.jinja_render("dev_edit_book.html", **args)
def get_form(self, form_define, instance=None): """ 如果没有instance这个参数 则通过get_argument 方法 从handler.request.argument 获取 如果有instance则从instance获取 instance是一个模型实例 如果想获取一个空form 直接生成一个 FormContainer实例 """ form = f.FormContainer() if instance is not None: get = lambda field: getattr(instance, field, '') else: get = lambda field: self.get_argument(field, '') for field in form_define.keys(): if field == '_form': continue form[field] = get(field) return form