我的模板中有两个表单:一个用于发布内容,另一个用于激活服务器上的文件删除:
<div style="margin-bottom:150px;">
<h4>Delete</h4>
<form method="post" action="/delete">
<div class="form-group">
<input type="hidden" name="delete_input"></input>
</div>
<button type="submit" class="btn btn-danger" id="btnSignUp">Delete</button>
</form>
</div>
<div style="margin-bottom:150px;">
<h4>URLs</h4>
<form method="post" action="/">
<div class="form-group">
<textarea class="form-control" rows="5" id="urls" name="url_area"></textarea>
</div>
<button type="submit" class="btn btn-primary" id="btnSignUp">Urls</button>
</form>
</div>
我的app.py
看起来是这样的:
@app.route("/")
def main():
return render_template('index.html')
@app.route('/', methods=['POST'])
def parse_urls():
_urls = request.form['url_area'].split("\n")
image_list = get_images(_urls)
return render_template('index.html', images=image_list)
@app.route('/delete', methods=['POST'])
def delete_images():
file_list = [f for f in os.listdir("./static") if f.endswith(".png")]
for f in file_list:
os.remove("./static/" + f)
image_list = []
conn = sqlite3.connect('_db/database.db')
curs = conn.cursor()
sql = "DROP TABLE IF EXISTS images"
curs.execute(sql)
conn.commit()
conn.close()
return render_template('index.html', images=image_list)
两个问题:
在我看来,我需要使用重定向来避免重复提交,在调用delete之后,我需要重定向到index。
我该怎么做才能正确?
我知道redirect
和url_for
,但如何重定向到同一页?
您可以通过
request.url
获取当前请求的URL:因此,要重定向到同一页,请使用:
一种方法是通过Javascript在表单中设置当前url。比如:
并通过JS设置隐藏的输入值,比如
在服务器上,
redirect
发送数据的url您可以将所有内容放在一个url中,但必须检查哪个表单已提交。您可以有不同的视图,但不呈现某些内容,在提交delete form后将所有表单放在主页中,只需将视图函数添加到此表单操作
action="{{url_for('delete_images')}}"
相关问题 更多 >
编程相关推荐