class Servicelog(Base):
__tablename__ = 'k_servicelog'
id = Column(Integer, primary_key=True)
question = Column(String(360),index=True)
answer = Column(String(300))
solution = Column(String(300))
createime = Column(DATETIME,default=datetime.datetime.now(),index=True)
endtime= Column(DATETIME,index=True)
feedback = Column(BOOLEAN,index=True)
servicestatus = Column(Integer,index=True)
def __init__(self,question='',answer='',feedback=0,servicestatus=0):
self.question = answer
self.answer = answer
self.solution = ''
self.feedback = feedback
self.servicestatus = servicestatus
def fieldtypes(self):
list = {'question':FormTextarea('question',label='Question',need=True),
'answer':FormTextarea('answer',label='Answer'),
'solution':FormTextarea('solution',label='Solution'),
'feedback':FormCheckbox('feedback',label='Service status'),
'servicestatus':FormRadio('servicestatus',{'none':'0','need':'1','tk':'2'}),
}
return list
def fieldtypes(self) 是附加的方法 定义了要生成form 的字段 包括验证信息
class toform:
fields = {}
param = {}
types = {}
def __init__(self,model):
self.param = model.__dict__
self.types = model.fieldtypes()
try:
for f in self.types:
if self.types.has_key(f):
self.types[f].value = self.param[f]
self.fields[f] = self.types[f]
else:
self.fields[f] = '<input type="text" name="%s" value="%s">'%(f,self.param[f])
except Exception,error:
print error
def as_l(self):
aslabel = ''
for k in self.fields:
#print type(self.fields[k]),type(self.types[k].label)
aslabel += '<label><b>%s:</b> %s<br/></label>'%(''.join(self.types[k].label),self.fields[k])
return aslabel
def valid(self):
ok = True
for k in self.fields:
self.fields[k].valid()
if self.fields[k].error:
ok = False
return ok
class FormText:
name = ''
value = ''
label = ''
error = ''
kwargs = {}
def __init__(self,name,label = '',**kwargs):
self.name = name
self.label = label
self.kwargs = kwargs
def render(self):
return u'<input type="text" name="%s" value="%s"> '%(self.name,self.value or '')
def __unicode__(self):
return self.render()
def withlabel(self):
return u'<label for="%s"><b>%s:</b><input type="text" name="%s" value="%s"><br/> %s</label>'%(self.name,self.label,self.name,self.value or '',self.error)
def valid(self):
if self.kwargs.get('need',False) and self.value=='':
self.error = _('This field is required.')
return
if self.kwargs.has_key('minlength'):
if(len(self.value)<self.kwargs.get('minlength')):
self.error = _('This field min length is.')
return
if self.kwargs.has_key('maxlength'):
if(len(self.value)<self.kwargs.get('maxlength')):
self.error = _('This field min length is.')
return
class FormTextarea:
name = ''
value = ''
label = ''
error = ''
cols = 10
rows = 5
kwargs = {}
def __init__(self,name,cols=10,rows=5,label = '',**kwargs):
self.name = name
self.cols = cols
self.rows = rows
self.label = label
self.kwargs = kwargs
def render(self):
return u'<textarea name="%s" cols="%s" rows="%s">%s</textarea>'%(self.name,self.cols,self.rows,self.value)
def valid(self):
if self.kwargs.get('need',False) and self.value=='':
self.error = _('This field is required.')
return
if self.kwargs.has_key('minlength'):
if(len(self.value)<self.kwargs.get('minlength')):
self.error = _('This field min length is.')
return
if self.kwargs.has_key('maxlength'):
if(len(self.value)<self.kwargs.get('maxlength')):
self.error = _('This field min length is.')
return
def __unicode__(self):
return self.render()
def withlabel(self):
return u'<label for="%s"><b>%s:</b>%s<br/> %s</label>'%(self.name,self.label,self.render(),self.error)
class FormCheckbox:
name = ''
value = ''
error = ''
kwargs = {}
def __init__(self,name,label = '',**kwargs):
self.name = name
self.label = label
self.kwargs = kwargs
def render(self):
check = ''
if int(self.value) == 1:
check = 'checked'
return '<input type="checkbox" name="%s" value="1" %s>'%(self.name,check)
def valid(self):
if self.kwargs.get('need',False) and self.value=='':
self.error = _('This field is required.')
def __unicode__(self):
return self.render()
class FormRadio:
name = ''
value = ''
label = ''
error = ''
option = {}
kwargs = {}
def __init__(self,name,option,label = '',**kwargs):
self.name = name
self.option = option
self.label = label
self.kwargs = kwargs
def render(self):
check = ''
html = ''
for k in self.option:
if self.value == self.option[k]:
check = 'checked'
else:
check = ''
html += '<label><input class="f-radio" type="radio" name="%s" value="%s" %s> %s</label>'%(self.name,self.option[k],check,k)
return html
def valid(self):
if self.kwargs.get('need',False) and self.value=='':
self.error = _('This field is required.')
def __unicode__(self):
return self.render()
使用起来如下
form = toform(Servicelog())
form.valie() #验证数据
form.as_l #输出form内各元素
form.fields.question #输出单个字段 并带 label
form.fields.question.withlabel #输出单个字段 并带 label,错误提示
分享到:
相关推荐
sqlalchemy 文档 供大家参考
这是一个读取现有数据库结构并生成适当SQLAlchemy模型代码的工具,如果可能的话,使用声明性样式。 编写此工具是为了替代 ,它遇到了几个问题(包括但不限于与Python 3和最新SQLAlchemy版本不兼容)。 特征 支持...
Pydantic-SQLAlchemy 从SQLAlchemy模型生成Pydantic模型的工具。 仍处于实验阶段。 如何使用 快速示例: from typing import List from pydantic_sqlalchemy import sqlalchemy_to_pydantic from sqlalchemy import...
金字塔转换器使用sa2schema.to.pydantic包,可以将SqlAlchemy模型转换为Pydantic模型。 $ pip install sa2schema ... :smiling_face_with_smiling_eyes:列示例让我们从一个基本示例开始:一个User模型将成为Pydantic...
SQLAlchemy是Python SQL工具包和对象关系映射器,它为应用程序开发人员提供了SQL的全部功能和灵活性。 SQLAlchemy提供了一整套众所周知的企业级持久性模式,旨在实现高效,高性能的数据库访问
SQLAlchemy“采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型”。SQLAlchemy的理念是,SQL数据库的量级和性能重要于对象集合;而对象集合的抽象又重要于表和行。因此,...
SQLAlchemy python 开发SQL
Mysql 数据库 SQLAlchemy技术文档 SQLAlchemy技术文档(中文版)
SQLAlchemy 1.1 Documentation
a user-defined domain model which is transparently persisted and refreshed from its underlying storage model. The other approaches it from the perspective of literal schema and SQL expression ...
sqlAlchemy教程
Flask-SQLAlchemy包下载及安装,此类用于控制SQLAlchemy与一个或多个Flask应用程序的集成。 根据您初始化对象的方式,该对象立即可用或将根据需要附加到Flask应用程序。
sqlalchemy文档资料翻译(part)大部分内容和框架
主要为大家详细介绍了利用flask sqlalchemy实现分页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
使用异步SQLAlchemy、SQLModel、Postgres、Alembic和Docker.zip
sqlalchemy官方文档
WTForms-SQLAlchemy ...特征提供SelectField与SQLAlchemy模型的集成wtforms_sqlalchemy.fields.QuerySelectField wtforms_sqlalchemy.fields.QuerySelectMultipleField 使用wtforms_sqlalchemy.orm.model_form从SQLA