【发布时间】:2018-04-04 14:42:00
【问题描述】:
我正在寻找一种简单的方法来使用文本文件中的数据预填充表单的字段。
这是我的导入:
#For Flask
from flask import Flask, render_template, flash, request, redirect, url_for, send_file
#For Web Form
from wtforms import Form, TextField, TextAreaField, validators, StringField, SubmitField, SelectField, RadioField, IntegerField, DateTimeField, DecimalField, FloatField
from werkzeug.utils import secure_filename
import re #For Regex
我的表单有以下类:
class MainForm(Form):
#Regex
reEmail_comp = re.compile('^.+@.+\..+$')
reJobname_comp = re.compile('[^\s]+[\w]+$')
#Form Fields
familyname = TextField('Family Name:',
validators=[validators.DataRequired()])
firstname = TextField('First Name:',
validators=[validators.DataRequired()])
email = TextField('Email:',
validators=[validators.DataRequired(),
validators.Length(min=3, max=51),
validators.Regexp(regex=reEmail_comp)])
# Copy List of Job Templates
list_job_name = list_job_templates
# Create List of Tuples
choices_list = list(zip(list_job_name,list_job_templates))
# Generate string to be evaluate as analyses Radiofield
radio_string = ("RadioField('Analysis Type:',"
"validators=[validators.DataRequired()],choices="+str(choices_list)+")")
# Attribute value to element as a variable
locals()["analyses"] = eval(radio_string)
jobname = TextField('Job Name:',
validators=[validators.DataRequired(),
validators.Length(min=3, max=100),
validators.Regexp(regex=reJobname_comp)])
jobdescription = TextAreaField('Job Description:',
validators=[validators.Optional(),
validators.Length(min=0, max=10000)])
还有以下观点:
@app.route('/home', methods=['GET', 'POST'])
def home():
form = MainForm(request.form)
print(form.errors)
if request.method == 'POST':
familyname=request.form['familyname']
firstname=request.form['firstname']
email=request.form['email']
analyses=request.form['analyses']
jobname=request.form['jobname']
jobdescription=request.form['jobdescription']
if jobdescription == "":
jobdescription = "No Description"
nextpage=request.form['submit'] #Get submission button value
if form.validate():
#Print Temp file
print("||".join(["Family Name={}".format(familyname),
"First Name={}".format(firstname),"E-Mail={}".format(email),
"Analyse={}".format(analyses),"Job Name={}".format(jobname),
"Job Description={}".format(jobdescription)]),
file=open(submission_dir+"temp1", "w"))
#Redirections following which button has been clicked
if nextpage == 'Continue to Submission':
return redirect(url_for('nextpage'))
else:
return redirect(url_for('nextbis'))
else:
flash('Error: Please make sure that all the fields are correctly filled.')
return render_template('home.html', form=form)
用户有权访问表单并可以填写它。
正如您在视图中看到的,有一个步骤,在此步骤中,一旦用户提交信息,所有信息都将存储在临时“temp1.txt”文件中。
我想做的是让用户可以选择返回此表单,以防他想修改他之前提交的信息。
为了简化这一点,我希望表单显示相同的字段,但这次预先填充了上次提交的临时文本文件中的信息。
我怎样才能以简单的方式做到这一点?
【问题讨论】: