我正在制作一些基本形式的线路,并且我遇到了意外的405 Method Not Allowed
拦截器。
基本上我在jinja模板中有一些html看起来像......
<!--Select File Y-->
<tr>
<td>File Y</td>
<td>{{form.pathY }}</td>
<td><input type=file name=browse ></td>
<td><button onclick="window.location.href='{{ url_for( 'dataTablePage' , table='Y' ) }}';">Display Table Y</button></td>
</tr>
<tr>
<td/>
<td/>
<td/>
<td><a href="{{ url_for( 'dataTablePage' , table='Merged' ) }}">View Merged Data</a></td>
</tr>
在DOM中,这或多或少地呈现了我所期望的与location.href =&#39; / DataTable / Y /&#39;
然而,当我点击按钮时,我会在405 Method Not Allowed
页面中查看。
另一方面,当我从url_for的锚点重定向时,重定向按预期工作。在按钮的onclick重定向中使用url_for的处理是什么?
不确定是否重要,但这是我连接的路线...
@app.route('/DataTable/<table>/')
def dataTablePage(table) :
"""
Takes the user to the Table View corresponding to the given table parameter
"""
table == "X" :
dfTable = DataFrame( data = {"X1":[1,2,3] , "X2":[2,3,4]} )
elif table == "Y" :
dfTable = DataFrame( data = {"Y1":[1,2,3,4,5] , "Y2":[2,3,4,5,6]} )
elif table == "Merged" :
dfTable = DataFrame( data = {"M1":[1,2] , "M2":[2,3]} )
else :
redirect( url_for('error') )
return render_template( 'dataTable.html' , filePath="x.csv" , headers=dfTable.columns.values.tolist() , table=dfTable.iterrows() )
答案 0 :(得分:4)
这实际上是您的HTML问题,default "type"
of button
is:
缺失值默认为提交按钮状态。
由于你没有指定按钮的类型,它只是尝试提交表单,这会导致405问题。
将您的按钮类型更改为<button type="button" onclick="window.location.href='{{ url_for( 'dataTablePage' , table='Y' ) }}';">Display Table Y</button>
,它应按预期工作:
{{1}}