Flask,jinja2:是否可以使用render_template()呈现页面的一部分,而不影响页面的其余部分
我有一个主页,其中包括一些不同的形式,其中之一是编辑个人资料的形式。我正在使用wtfforms处理表单,并且有一个名为edit_profile.html的子模板,它可以呈现原始表单和edit_profile view函数返回的任何错误。我想做的是: 如果返回错误:在不干扰页面其余部分的情况下呈现子模板edit_profile.html 目前有一个主页查看功能:Flask,jinja2:是否可以使用render_template()呈现页面的一部分,而不影响页面的其余部分,flask,jinja2,flask-wtforms,Flask,Jinja2,Flask Wtforms,我有一个主页,其中包括一些不同的形式,其中之一是编辑个人资料的形式。我正在使用wtfforms处理表单,并且有一个名为edit_profile.html的子模板,它可以呈现原始表单和edit_profile view函数返回的任何错误。我想做的是: 如果返回错误:在不干扰页面其余部分的情况下呈现子模板edit_profile.html 目前有一个主页查看功能: @app.route('/', methods=['GET','POST']) def home(): cur = g.db.exe
@app.route('/', methods=['GET','POST'])
def home():
cur = g.db.execute(some_select_statement)
data = cur.fetchall()
some_var = some_function(data)
ep_form = EditProfile()
return render_template('home.html', some_var=some_var, ep_form=ep_form)
然后是一个处理配置文件编辑的函数:
@app.route('/edit_profile', methods=['GET', 'POST'])
def edit_profile():
ep_form = EditProfile()
if ep_form.validate_on_submit():
# In here is the code that handles the new profile data
return render_template('edit_html', ep_form=ep_form)
在返回错误的那一刻,除了要呈现的“some_var”之外,大部分页面都会返回。我知道我可以使用Ajax来呈现WTF错误值并保持页面的其余部分不变,但我想知道是否有一种方法可以仅使用Flask和Jinja来实现这一点。如果在处理表单数据时遇到任何错误,请使用POST数据重定向到
主页
端点(使用代码307)
现在在home
端点中,我们需要处理可能从edit\u profile
重定向的POST数据
@app.route('/', methods=['GET','POST'])
def home():
# fetch data from DB, other values
ep_form = EditProfile()
# We need to call validate_on_submit so that
# the data is validated and errors are populated
if request.method == "POST":
ep_form.validate_on_submit()
return render_template('home.html', some_var=some_var, ep_form=ep_form)
通过这种方式,主视图功能将能够访问表单数据,验证表单数据并显示错误。非常感谢vivekagr,它似乎工作得非常好
@app.route('/', methods=['GET','POST'])
def home():
# fetch data from DB, other values
ep_form = EditProfile()
# We need to call validate_on_submit so that
# the data is validated and errors are populated
if request.method == "POST":
ep_form.validate_on_submit()
return render_template('home.html', some_var=some_var, ep_form=ep_form)