如何使用flask以最少的行数写入文件,上载文件并将其存储到数据库中?

如何使用flask以最少的行数写入文件,上载文件并将其存储到数据库中?,flask,Flask,我有一个网页,有许多文件的上传形式。 数字超过10个pc,唯一的区别是表格的标题 现在,我用的是烧瓶和金盏花。 数据库模型有不同的类,因为每个表单有不同的处理方式 我想避免重复相同的代码, 但是我不知道如何用最少的行来编写代码 请告诉我 文件上传标题1 model_table={“MAP”:MapiosMaster,“PAL”:PalcomMaster,“BUN”:BunruiMaster,“NUM”:ProcessMaster} @app.route('/import',methods

我有一个网页,有许多文件的上传形式。 数字超过10个pc,唯一的区别是表格的标题

现在,我用的是烧瓶和金盏花。 数据库模型有不同的类,因为每个表单有不同的处理方式

我想避免重复相同的代码, 但是我不知道如何用最少的行来编写代码

请告诉我

文件上传标题1


model_table={“MAP”:MapiosMaster,“PAL”:PalcomMaster,“BUN”:BunruiMaster,“NUM”:ProcessMaster}
@app.route('/import',methods=[“GET”,“POST”])
def数据_导入():
form1=上传表单()
form2=上传表单()
form3=上传表单()
............
form10=上传表单()
如果request.method==“POST”:
如果form1.validate_on_submit():
filename=secure\u文件名(form1.file.data.filename)
form1.file.data.save(os.path.join(app.config['UPLOAD\u FOLDER'],文件名))
如果form2.validate_on_submit():
filename=secure\u文件名(form2.file.data.filename)
form2.file.data.save(os.path.join(app.config['UPLOAD\u FOLDER'],filename))
如果表单3.在提交时验证提交():
filename=secure\u文件名(form3.file.data.filename)
form3.file.data.save(os.path.join(app.config['UPLOAD\u FOLDER'],文件名))
##重复10次
返回重定向(url\u for('data\u import'))
返回渲染模板(
'import.html',form1=form1,form2=form2,formX=formX)
我试着写一些代码, 那就是使用flask的jinja模板和Javascript。 我需要一个索引号,它是html表单和数据库模型之间的绑定关系

在烧瓶侧,渲染JINJA2时使用loop.index0。 另一方面,JS根据MAP的索引生成索引号

JS和FLASK具有可与ID代码关联的字典

{%for i in forms%}

{{forms.csrf_token}

{%endfor%} 变量dict= { “标题1”:“id1”, “标题2”:“id2”, ............ “标题10”:“id10”, }; Object.keys(dict.map)(函数(键,索引){ document.getElementById('t'+索引).textContent=key; document.getElementById('f'+索引).action+=“/”+dict[key]; });

模型_表={“id1”:数据库1,“no2”:数据库2,…,“id10”:数据库3}
@app.route('/import/',methods=[“GET”,“POST”])
def数据导入(型号名称):
如果request.method==“POST”:
如果“文件”不在request.files中:
闪存(“无文件部分”)
返回重定向(request.url)
file=request.files['file']
如果file.filename=='':
闪存(名称+”ファイルを選択してください。", "失败的”)
返回重定向(request.url)
如果文件和允许的文件(file.filename):
filename=secure\u文件名(file.filename)
filename=os.path.join(app.config['UPLOAD\u FOLDER'],文件名)
file.save(文件名)
模型=模型表[模型名称]
objects=model.data_导入(文件名)#一些代码导入数据
实例=模型(对象)#创建数据库条目
db.session.bulk\u save\u对象(实例)
db.session.commit()
返回渲染模板(
“import.html”,
表格=范围(10)#表格总数
)

model_table = {"id1":database1,"no2":database2, .......,"id10":database3}

@app.route('/import/<model_name>',methods=["GET", "POST"])
def data_import(model_name):
    if request.method == 'POST': 
        if 'file' not in request.files:
            flash('No file part')
            return redirect(request.url)
        file = request.files['file']
        if file.filename == '':
            flash(name + "ファイルを選択してください。", "failed")
            return redirect(request.url)
        if file and allowed_file(file.filename): 
            filename = secure_filename(file.filename)
            filename = os.path.join(app.config['UPLOAD_FOLDER'], filename)
            file.save(filename)
            model = model_table[model_name]
            objects = model.data_import(filename)   #some code inport data
            instance = Model(objects)  #create a database entries 
            db.session.bulk_save_objects(instance)
            db.session.commit()

    return render_template( 
        'import.html',
        forms = range(10)  #number of the total forms
    )