2015-09-03 40 views
0

每當我請求頁面時,它都會正常加載,但是當我提交表單時,我收到400個錯誤的請求,我相信它可能會與實際html做,但我不知道什麼。400當從子文件夾中使用頁面並提交表單時,來自瓶子的錯誤請求

HTML文件/admin/dashboard.html

<div class="container"> 
    <p><strong>Shut down server?</strong></p> 
    <form action="/" method="POST"> 
     <input class="btn btn-danger" id="fred" name="fred" type="submit"   value="fred"></input> 
    </form> 
</div> 

Python文件

@app.route('/admin/dashboard', methods=['GET', 'POST']) 
def admin_dashboard(): 
if request.method == 'GET': 
     return render_template("/admin/dashboard.html") 
if request.method == 'POST': 
     if request.form['submit'] == 'fred': 
      admin.log("Shutting down...") 
      #os._exit(1) 
     else: 
      return render_template("/admin/dashboard.html") 
     return render_template("/admin/dashboard.html") 

回答

0

您檢查是否有名稱submit一個字段是出現在請求:

if request.form['submit'] == 'fred': 

但有沒有這樣的領域,該領域實際上是一個名爲fred

<input class="btn btn-danger" id="fred" name="fred" type="submit" value="fred"></input> 

您應該更改請求檢查:

if request.form['fred'] == 'fred': 

或更改輸入名稱:

<input class="btn btn-danger" id="fred" name="submit" type="submit" value="fred"></input> 
+0

感謝您回覆如此迅速,我嘗試了您提出的兩件事,並且它仍然返回了400個錯誤的請求 –

-1

In Flask doc

我們建議您通過獲取或通過獲取KeyError訪問URL參數,因爲用戶可能會更改URL並向他們呈現400 錯誤的請求頁面,但這種情況不方便用戶使用。

所以也許你可以嘗試

request.form.get('submit', '') 

因此您的代碼:

if request.method == 'POST': 
    if request.form.get('submit') == 'fred': 
     admin.log("Shutting down...") 
     #os._exit(1) 
    else: 
     return render_template("/admin/dashboard.html") 
    return render_template("/admin/dashboard.html") 
+0

問題是他們訪問錯誤的鍵(和錯誤的視圖)。忽略該錯誤是錯誤的解決方案,因爲它不能解決問題。 – davidism

1

您正在發佈到/路徑,但處理您的文章的觀點是/admin/dashboard。從表單中移除action="/"行,因爲它與呈現網頁的網址相同。

如果您確實需要其他網址,請使用url_for('name_of_endpoint')。例如,要生成def admin_dashboard():的網址,請使用url_for('admin_dashboard')

此外,您將輸入命名爲'fred',因此您需要訪問request.form['fred'],或者將輸入的名稱更改爲'submit'。

相關問題