有关ASTEP 2019渲染架构的实用程序包
astep-forms-utils的Python项目详细描述
模块帮助生成用于体系结构的字段集和字段 ASTEP-2019(奥尔堡大学)。这可以用于任何写在烧瓶里的服务,以确保你没有 创建太多重复代码。它的灵感来自于django。
支持的版本
python=3.5
示例
创建一个处理不同字段的FieldSet
实例
两者都在/fields/
端点中显示,并用/render/
进行验证
在字段中使用basis的示例可以是:
fromastep_form_utilsimportFieldSet,StringField,FloatFieldfromflaskimportFlask,jsonifyapp=Flask(__name__,static_url_path="")@app.route("/fields")deffields():field_set=FieldSet(StringField("my_name",label="Input Your Name:"),FloatField("my_age",label="Input Your Age:"))returnjsonify(field_set.as_form_fields())
返回json如下:
[{"label":"Input Your Name:","name":"my_name","type":"input"},{"label":"Input Your Age:","name":"my_age","type":"input-number"}]
您也可以使用枚举:
fromastep_form_utilsimportFieldSet,EnumFieldfromenumimportEnumclassMyModel(Enum):PRETTY_MODEL=auto()UGLY_MODEL=auto()field_set=FieldSet(EnumField("my_string",MyModel,label="Pick a model"))
'
您也可以在/render/
端点中使用字段集来验证数据:
fromastep_form_utilsimportFieldSet,StringField,FloatField,is_data_emptyfromflaskimportFlask,jsonify,requestapp=Flask(__name__,static_url_path="")@app.route("/render")defrender():field_set=FieldSet(StringField("my_name",label="Input Your Name:"),FloatField("my_age",label="Input Your Age:"))ifis_data_empty(request):returnjsonify({'chart_type':'text','content':'Supply data please!'})iffield_set.is_valid(request):my_name=field_set.cleaned_data['my_name']my_age=field_set.cleaned_data['my_age']returnjsonify({'chart_type':'text','content':f'Hello my name is {my_name} and i am {my_age} years old.'})
为了使它更干燥并重用fieldset定义,可以使用工厂
函数field_set_factory
,以重用相同的定义,如下所示:
fromastep_form_utilsimportStringField,FloatField, \ is_data_empty,field_set_factoryfromflaskimportFlask,jsonify,requestapp=Flask(__name__,static_url_path="")# returns a method that creates a FieldSet with the two fieldsFIELD_SET_FACTORY=field_set_factory(StringField("my_name",label="Input Your Name:"),FloatField("my_age",label="Input Your Age:"))@app.route("/render")defrender():# Creates a fieldset with the defined fieldsfield_set=FIELD_SET_FACTORY()ifis_data_empty(request):returnjsonify({'chart_type':'text','content':'Supply data please!'})iffield_set.is_valid(request):my_name=field_set.cleaned_data['my_name']my_age=field_set.cleaned_data['my_age']returnjsonify({'chart_type':'text','content':f'Hello my name is {my_name} and i am {my_age} years old.'})raiseNotImplementedError()@app.route("/fields")deffields():field_set=FIELD_SET_FACTORY()returnjsonify(field_set.as_form_fields())
完整的解决方案可以在 实现chart type test 微服务。