Django的調試方法


web程序調試起來和桌面程序有着很大的差別,對於Django程序來說調試更是個問題。我們可以用postman發送http請求,下面就介紹幾種調試方法:

1、在Eclipse+Pydev中調試Django

適用於測試環境。

可進行單步調試,查看變量值,當出現except時,可以用Python標准模塊traceback的print_exc()函數查看函數調用鏈,是最強大的調試利器。

可參考http://my.oschina.net/chihz/blog/180573#OSC_h2_3

 

2、使用Django的error page

適用於測試環境。

Django的error page功能很強大,能提供詳細的traceback,包括局部變量的值,以及一個純文本的異常信息。擁有同phpinfo()一樣的作用,

可以展示當前應用的相關設置,包括請求中的 GET, POST and COOKIE 數據以及HTTP環境中的所有重要META fields。

可以通過

assert False
assert False, request.GET

來觸發Django的錯誤頁面,進而進行調試工作

 

3、django-debug-toolbar

    不確定是否用於生產環境。聽說功能非常強大,我沒用過。

 

4、輸出log到開發服務器終端中

適用於生產環境。

借助python的logging模塊

在setting.py中添加如下配置

import logging
logging.basicConfig(
level
= logging.DEBUG,
format
= ' %(asctime)s %(levelname)s %(message)s ' ,
)

在需要輸出log信息的地方可以這樣調用

import logging
logging.debug(
" A log message " )

這樣一來就能在開發服務器的終端中看到想要輸出的log,如果想將log信息記錄到指定文件中去,調整logging的basicConfig即可,如下所示:

logging.basicConfig(
level
= logging.DEBUG,
format
= ' %(asctime)s %(levelname)s %(message)s ' ,
filename
= ' /tmp/myapp.log ' ,
filemode
= ' w '
)

有時我們發現我們的程序大部分情況下運行正常,只在特定環境中出現錯誤,此時可以使用traceback module 記錄當前棧存信息 ,方便調試。具體調用方法如下所示:

import logging, traceback, pprint
def my_buggy_function(arg):
...
if error_condition:
stack
= pprint.pformat(traceback.extract_stack())
logging.debug(
' An error occurred: %s ' % stack)

logging模塊是線程安全的,但不能用於多進程。在多進程的環境下,需要做成B/S結構的,可參考http://www.blogjava.net/qileilove/archive/2014/01/08/408669.html


免責聲明!

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



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