在routes.py
中,我有一个函数:
@app.route('/')
@app.route('/makecsc_relocation')
def makecsc_relocation(csc_post_index):
...
makeCscRelocationRep(repname, csc_post_index)
return send_file(repname+'.xlsx', as_attachment=True, attachment_filename=repname+' '+csc_post_index+'.xlsx')
在index
中,我有以下内容:
@app.route('/')
@app.route('/index')
def index():
...
sForm = """<form action="makecsc_relocation">
Enter postal code here: <input type="text" name="post_index" value=""><br>
<input type="submit" value="Download report" ><br>
</form>"""
如果我使用在<form action="">
中没有参数的函数并向其传递一个空的input
值,则一切正常,但是当我尝试将input post_index
传递为该参数时,函数,出现以下URL,出现“内部服务器错误”:
http://myservername/makecsc_relocation?post_index=452680
我该如何解决?
答案 0 :(得分:1)
功能参数始终是路径参数,即您向<parametername>
注册的路由路径中的@app.route()
个组件。您没有此类参数,因此请勿为您的函数提供任何参数。请参见Flask快速入门中的Variable Rules。
Query 参数(来自表单的key = value对,放在URL中的?
之后)以request.args
结尾:
@app.route('/makecsc_relocation')
def makecsc_relocation():
csc_post_index = request.args.get('post_index') # can return None
# ...
makeCscRelocationRep(repname, csc_post_index)
return send_file(repname+'.xlsx', as_attachment=True, attachment_filename=repname+' '+csc_post_index+'.xlsx')
请参阅快速入门的The Request Object部分。
request.args.get(...)
。request.args[...]
,不要提供该值。如果缺少查询参数,则会向客户端提供一个400 Bad Request HTTP错误响应。有关此映射的详细信息,请参见Werkzeug MultiDict
documentation。
答案 1 :(得分:0)
我最终得到了以下解决方案:
NotificationCompat.DecoratedCustomViewStyle.
方法POST
sForm = """<form action="makecsc_relocation" method="post">
Enter postal code here: <input type="text" name="post_index" value=""><br>
<input type="submit" value="Download report" ><br>
</form>"""
中,我添加了以下字符串:makecsc_relocation
并将其传递给csc_post_index = request.form['post_index']