如何在提交表单后调用不同的渲染器
How to call a different render after a form submission
我是第一次接触 Flask,但遇到了一些问题。
我目前有一个模板,当我的选项卡 values
为空时,它包含一个表单,提交时应该使用表单的参数调用特定函数和 return 另一个模板。表单的每次调用实际上都应该调用具有不同值的 index.html
模板。
相关部分代码如下:
main.py
@app.route('/', methods=['POST','GET'])
def main():
global maxDepth, numberOfRelated
if not values:
return render_template('initial.html')
if request.method=='POST':
url = request.form['url']
maxDepth = request.form['depth']
numberOfRelated = request.form['numberOfRelated']
values = crawling(url,maxDepth,numberOfRelated)
return render_template('index.html',var=values)
initial.html
和index.html
的形式部分其实是一样的
<form class="form-inline" action="/" method="POST">
<div class="form-group">
<input name='url' type="text" class="form-control"/>
</div>
<div class="form-group minorForm">
<input name='numberOfRelated' type="text" class="form-control" />
</div>
<div class="form-group minorForm">
<input name='depth' type="text" class="form-control" />
</div>
<div class="form-group navbar-right">
<button class="btn btn-success minorForm generate" type="submit"> Generate</button>
</div>
</form>
在您的 main
方法中,除非值是全局的,否则不会为 if not values
定义。
关于您的问题,在表单已提交的条件之后添加另一个 render_template
调用:
if request.method=='POST':
url = request.form['url']
maxDepth = request.form['depth']
numberOfRelated = request.form['numberOfRelated']
values = crawling(url,maxDepth,numberOfRelated)
return render_template('index.html',var=values) # 1
return render_template('index.html',var=values) # 2
如果提交表单,条件将为真,模板将在评论 #1
处呈现。如果用户正常导航到页面,则条件将为 false 并调用带有注释 #2
的行。
我对这个问题有点困惑,但你应该总是在 POST 之后重定向(除非表单中有错误并且没有采取任何行动)。这样,如果用户重新加载页面,则不会重复相同的操作。
我是第一次接触 Flask,但遇到了一些问题。
我目前有一个模板,当我的选项卡 values
为空时,它包含一个表单,提交时应该使用表单的参数调用特定函数和 return 另一个模板。表单的每次调用实际上都应该调用具有不同值的 index.html
模板。
相关部分代码如下:
main.py
@app.route('/', methods=['POST','GET'])
def main():
global maxDepth, numberOfRelated
if not values:
return render_template('initial.html')
if request.method=='POST':
url = request.form['url']
maxDepth = request.form['depth']
numberOfRelated = request.form['numberOfRelated']
values = crawling(url,maxDepth,numberOfRelated)
return render_template('index.html',var=values)
initial.html
和index.html
的形式部分其实是一样的
<form class="form-inline" action="/" method="POST">
<div class="form-group">
<input name='url' type="text" class="form-control"/>
</div>
<div class="form-group minorForm">
<input name='numberOfRelated' type="text" class="form-control" />
</div>
<div class="form-group minorForm">
<input name='depth' type="text" class="form-control" />
</div>
<div class="form-group navbar-right">
<button class="btn btn-success minorForm generate" type="submit"> Generate</button>
</div>
</form>
在您的 main
方法中,除非值是全局的,否则不会为 if not values
定义。
关于您的问题,在表单已提交的条件之后添加另一个 render_template
调用:
if request.method=='POST':
url = request.form['url']
maxDepth = request.form['depth']
numberOfRelated = request.form['numberOfRelated']
values = crawling(url,maxDepth,numberOfRelated)
return render_template('index.html',var=values) # 1
return render_template('index.html',var=values) # 2
如果提交表单,条件将为真,模板将在评论 #1
处呈现。如果用户正常导航到页面,则条件将为 false 并调用带有注释 #2
的行。
我对这个问题有点困惑,但你应该总是在 POST 之后重定向(除非表单中有错误并且没有采取任何行动)。这样,如果用户重新加载页面,则不会重复相同的操作。