Django調試方法兩則

來源:互聯網
上載者:User

web程式調試起來和傳統型程式有著很大的差別,對於Django程式來說調試更是個問題,雖然現在有第三方的調試工具robhudson-django-debug-toolbar,但使用起來並不是很方便,而且很多人習慣於通過print來調試,這樣方便快捷。下面就介紹兩種簡單的調試方法:

1.充分利用Django的error page

Django的error page功能很強大,能提供詳細的traceback,包括局部變數的值,以及一個純文字的異常資訊。擁有同phpinfo()一樣的作用,可以展示當前應用的相關設定,包括請求中的 GET, POST and COOKIE 資料以及HTTP環境中的所有重要META fields。

可以通過


assert False
assert False, request.GET

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

 

2.輸出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)

上述調試方法來源於網路,參見:http://simonwillison.net/2008/May/22/debugging/

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.