2016-09-29 58 views
0

我有一個簡單的燒瓶應用程序部署使用共享主機服務器上運行的CGI + Apache。燒瓶CGI應用程序問題與打印聲明

該應用程序與Flask-Mail 0.9.1一起在Python 2.6上運行Flask 0.11.1。

該應用程序中的一個頁面有一個聯繫表單,用於發送電子郵件並重定向回到同一頁面。

接觸形式具有以「/ sendmail的」是在瓶控制器定義如下一個POST操作 -

@app.route("/sendmail", methods=['GET','POST']) 
def send_mail(): 
    print "Sending Email" 
    mail = SendMail(app) 
    mail.send_mail(request.form['name'], request.form['mail'], request.form['phoneNo'], request.form['message']) 
    return render_template('contact.html') 

這裏的問題 -

  1. 用上述代碼,應用程序發送我成功地發送了一封電子郵件,然後發出錯誤'/ sendmail'找不到。該模板無法呈現。
  2. 如果我從代碼片段中刪除打印語句,則應用程序在發送電子郵件後成功呈現contact.html。

什麼解釋了片段中print語句的行爲?考慮到執行是連續的,在渲染模板的過程中,不應該發送電子郵件而不是失敗,否則塊不應該在打印語句本身失敗?

+0

絕對有其他事情在這裏進行。我會建議玩更多。 – Andrey

回答

0

打印語句不應該創建錯誤,因爲它是其他語句之一。相反,因爲您沒有檢查request.method=='POST',這應該會在您的獲取請求中創建並拋出一個錯誤。要重定向到相同的頁面return redirect("/sendmail")不要忘記像這樣從瓶子裏導入from flask import redirect

+0

我已經嘗試檢查request.method =='POST'。此外,我還有3個這樣的控制器功能,它們具有打印語句並在刪除打印後開始工作。 –