Flask第五篇——設置debug模式


 flask默認是沒有開啟debug模式的,開啟debug模式有很多好處:

第一,可以幫助我們查找代碼里面的錯誤,比如:

# coding: utf-8

from flask import Flask

# __name__是用來確定flask運行的主文件
app = Flask(__name__)

@app.route('/')

def hello_world():    x = 10    y = 0    res = x/y
   print res
   return 'Hello World!'

if __name__ == '__main__':    app.run()

我們都知道,除數是不能為0的,但是上面的代碼里y的值是0,我們運行這段代碼,然后去地址查看,只能看到內部服務錯誤,但是沒有任何錯誤原因的說明,我們找起原因就會非常費勁:

除了方便找到bug以外,還有另一個原因促使我們開啟debug模式,就是如果我們不開啟debug模式,我們修改了上面代碼里y的值不等於0,然后ctrl+s保存代碼,去頁面刷新頁面仍然是上圖,也就是說Ctrl+s沒有重新加載代碼的運行,如果我們每次修改代碼都要重新運行代碼才能看到結果,是不是非常的不方便呢?以上兩個原因,讓我們需要開啟debug模式:

 

 

開啟debug模式只需要我們加一句app.debug = True即可。重新運行代碼以后我們發現控制台輸出的內容也和之前不一樣了,系統會提示你重啟了服務並且開啟了debug模式。

現在去刷新頁面,會發現頁面提示了我們報錯的原因:

 

而且在報錯的最下面可以看到代碼報錯的位置和原因:

 

現在我們來說一下控制台輸出的最后一行的PIN碼:

我們先來到報錯頁面代碼報錯的位置,將鼠標放在報錯語句上會看到后面有一個命令行樣子的圖標:

現在點擊那個圖標:

會發現頁面彈出了這么一個框:

上面說着(翻譯):控制台被鎖定,需要輸入PIN來解鎖。PIN已經在你運行服務(就是你的代碼)的shell(就是工具,我們用的是pychram)標准輸出里打印出來了,你可以在那里找到它。

我們把PIN碼粘貼過去就能看到:

我們可以直接在這里調試了,我們需要看一下y的值是不是真的是0,我們print y一下:

這樣就快速的定位到了問題的所在了。而且這個PIN值是不需要你每次都輸入的,你只要輸入一次,8小時以內都不需要再次輸入的,因為flask會生成一個cookie信息,記錄你的登錄狀態。

 

當然開啟debug模式並不是只有上面一種方式:

  • app.run(debug=True)

# coding: utf-8

from flask import Flask

# __name__是用來確定flask運行的主文件
app = Flask(__name__)

# 開啟debug模式方法一
# app.debug = True

@app.route('/')
def hello_world():    x = 10    y = 0    res = x/y
   print res
   return 'Hello World!'

if __name__ == '__main__':    
   # 開啟debug模式方法二    app.run(debug=True)
  • 第三種開啟debug的方法是通過配置文件

app.config.update(DEBUG=True)  

注意Debug必須要大寫哦

# coding: utf-8

from flask import Flask

# __name__是用來確定flask運行的主文件
app = Flask(__name__)

app.config.update(DEBUG=True)

@app.route('/')
def hello_world():    x = 10    y = 0    res = x/y    print res
   return 'Hello World!'

if __name__ == '__main__':    app.run()
  • 第四種開啟方式——加載文件

我們新建一個名為configs的py文件,內面寫:

# coding: utf-8
DEBUG = True

然后在代碼里先導入import configs再引用這個文件

app.config.from_object(configs)Ctrl+s保存就會看到設置生效了:

代碼如下:

# coding: utf-8

from flask import Flask
import configs

# __name__是用來確定flask運行的主文件
app = Flask(__name__)

app.config.from_object(configs)

@app.route('/')
def hello_world():    x = 10    y = 0    res = x/y
   print res
   return 'Hello World!'

if __name__ == '__main__':    app.run()

此外,如果你不導入import configsconfigs文件想用配置,那你也可以將上面代碼里的app.config.from_object(configs)修改為

app.config.from_object('configs')就是加個引號,這樣也是可以的:

 

 

雖然方式有這么多,但是我們還是習慣第一種最簡單直接的方式——

app.debug=True

 

 

微信公眾號搜索“自動化測試實戰”或掃描下方二維碼添加關注~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM