我第一次潜入Flask,我在找点工作时遇到了麻烦。
我目前有一个模板,当我的标签values
为空时,它包含一个表单,提交时应该使用表单的参数调用特定的函数并返回另一个模板。每次调用表单都应该使用不同的值调用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>
答案 0 :(得分:0)
在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
如果表单已提交,则条件将为true,模板将在注释#1
处呈现。如果用户正常导航到该页面,则条件将为false,并且将调用带有注释#2
的行。
答案 1 :(得分:0)
我对这个问题感到有些困惑,但是你应该在POST后重定向(除非表单中有错误并且没有采取任何措施)。这样,如果用户重新加载页面,则不会重复相同的操作。