最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django中處理出錯(cuò)頁(yè)面的方法

 更新時(shí)間:2015年07月15日 11:20:28   投稿:goldensun  
這篇文章主要介紹了Django中處理出錯(cuò)頁(yè)面的方法,即在異常出現(xiàn)時(shí)返回的頁(yè)面信息,需要的朋友可以參考下

花幾分鐘時(shí)間欣賞一下我們寫好的Web應(yīng)用程序,然后我們?cè)賮?lái)搞點(diǎn)小破壞。 我們故意在 views.py 文件中引入一項(xiàng) Python 錯(cuò)誤,注釋掉 hours_ahead 視圖中的 offset = int(offset) 一行。

def hours_ahead(request, offset):
  # try:
  #   offset = int(offset)
  # except ValueError:
  #   raise Http404()
  dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
  html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt)
  return HttpResponse(html)

啟動(dòng)開發(fā)服務(wù)器,然后訪問(wèn) /time/plus/3/ 。你會(huì)看到一個(gè)包含大量信息的出錯(cuò)頁(yè),最上面 的一條 TypeError 信息是: "unsupported type for timedelta hours component:  unicode" .

怎么回事呢? 是的, datetime.timedelta 函數(shù)要求 hours 參數(shù)必須為整型, 而我們注釋掉了將 offset 轉(zhuǎn)為整型的代碼。 這樣導(dǎo)致 datetime.timedelta 彈出 TypeError 異常。

這個(gè)例子是為了展示 Django 的出錯(cuò)頁(yè)面。 我們來(lái)花些時(shí)間看一看這個(gè)出錯(cuò)頁(yè),了解一下其中 給出了哪些信息。

以下是值得注意的一些要點(diǎn):

  •     在頁(yè)面頂部,你可以得到關(guān)鍵的異常信息: 異常數(shù)據(jù)類型、異常的參數(shù) (如本例中的 "unsupported type" )、在哪個(gè)文件中引發(fā)了異常、出錯(cuò)的行號(hào)等等。
  •     在關(guān)鍵異常信息下方,該頁(yè)面顯示了對(duì)該異常的完整 Python 追蹤信息。 這類似于你在 Python 命令行解釋器中獲得的追溯信息,只不過(guò)后者更具交互性。 對(duì)棧中的每一幀,Django 均顯示了其文件名、函數(shù)或方法名、行號(hào)及該行源代碼。
  •     點(diǎn)擊該行代碼 (以深灰色顯示),你可以看到出錯(cuò)行的前后幾行,從而得知相關(guān)上下文情況。
  •     點(diǎn)擊棧中的任何一幀的“Local vars”可以看到一個(gè)所有局部變量的列表,以及在出錯(cuò) 那一幀時(shí)它們的值。 這些調(diào)試信息相當(dāng)有用。
  •     注意“Traceback”下面的“Switch to copy-and-paste view”文字。 點(diǎn)擊這些字,追溯會(huì) 切換另一個(gè)視圖,它讓你很容易地復(fù)制和粘貼這些內(nèi)容。 當(dāng)你想同其他人分享這些異常 追溯以獲得技術(shù)支持時(shí)(比如在 Django 的 IRC 聊天室或郵件列表中),可以使用它。
  •     你按一下下面的“Share this traceback on a public Web site”按鈕,它將會(huì)完成這項(xiàng)工作。 點(diǎn)擊它以傳回追溯信息至http://www.dpaste.com/,在那里你可以得到一個(gè)單獨(dú)的URL并與其他人分享你的追溯信息。
  •     接下來(lái)的“Request information”部分包含了有關(guān)產(chǎn)生錯(cuò)誤的 Web 請(qǐng)求的大量信息: GET 和 POST、cookie 值、元數(shù)據(jù)(象 CGI 頭)。 在附錄H里給出了request的對(duì)象的 完整參考。
  •     Request信息的下面,“Settings”列出了 Django 使用的具體配置信息。 (我們已經(jīng)提及過(guò)ROOT_URLCONF,接下來(lái)我們將向你展示各式的Django設(shè)置。 附錄D覆蓋了所有可用的設(shè)置。)

Django 的出錯(cuò)頁(yè)某些情況下有能力顯示更多的信息,比如模板語(yǔ)法錯(cuò)誤。 我們討論 Django 模板系統(tǒng)時(shí)再說(shuō)它們。 現(xiàn)在,取消 offset = int(offset) 這行的注釋,讓它重新正常 工作。

不知道你是不是那種使用小心放置的 print 語(yǔ)句來(lái)幫助調(diào)試的程序員? 你其實(shí)可以用 Django 出錯(cuò)頁(yè)來(lái)做這些,而不用 print 語(yǔ)句。 在你視圖的任何位置,臨時(shí)插入一個(gè) assert False 來(lái)觸發(fā)出錯(cuò)頁(yè)。 然后,你就可以看到局部變量和程序語(yǔ)句了。 這里有個(gè)使用hours_ahead視圖的例子:

def hours_ahead(request, offset):
  try:
    offset = int(offset)
  except ValueError:
    raise Http404()
  dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
  assert False
  html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt)
  return HttpResponse(html)

最后,很顯然這些信息很多是敏感的,它暴露了你 Python 代碼的內(nèi)部結(jié)構(gòu)以及 Django 配置,在 Internet 上公開這信息是很愚蠢的。 不懷好意的人會(huì)嘗試使用它攻擊你的 Web 應(yīng)用程序,做些下流之事。 因此,Django 出錯(cuò)信息僅在 debug 模式下才會(huì)顯現(xiàn)。 我們稍后 說(shuō)明如何禁用 debug 模式。 現(xiàn)在,你只要知道 Django 服務(wù)器在你開啟它時(shí)默認(rèn)運(yùn)行在 debug 模式就行了。 (聽起來(lái)很熟悉? 頁(yè)面沒(méi)有發(fā)現(xiàn)錯(cuò)誤,如前所述,工作正常。)

相關(guān)文章

  • python jinjia2的項(xiàng)目使用

    python jinjia2的項(xiàng)目使用

    本文主要介紹了python jinjia2的項(xiàng)目使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python?numpy中np.random.seed()的詳細(xì)用法實(shí)例

    Python?numpy中np.random.seed()的詳細(xì)用法實(shí)例

    在學(xué)習(xí)人工智能時(shí),大量的使用了np.random.seed(),利用隨機(jī)數(shù)種子,使得每次生成的隨機(jī)數(shù)相同,下面這篇文章主要給大家介紹了關(guān)于Python?numpy中np.random.seed()的詳細(xì)用法,需要的朋友可以參考下
    2022-08-08
  • 詳解Python基礎(chǔ)random模塊隨機(jī)數(shù)的生成

    詳解Python基礎(chǔ)random模塊隨機(jī)數(shù)的生成

    這篇文章主要介紹了Python基礎(chǔ)random模塊隨機(jī)數(shù)的生成,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • python多線程比單線程效率低的原因及其解決方案

    python多線程比單線程效率低的原因及其解決方案

    這篇文章主要介紹了python多線程比單線程效率低的原因及其解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python autoescape標(biāo)簽用法解析

    Python autoescape標(biāo)簽用法解析

    這篇文章主要介紹了Python autoescape標(biāo)簽用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Python下載網(wǎng)絡(luò)文本數(shù)據(jù)到本地內(nèi)存的四種實(shí)現(xiàn)方法示例

    Python下載網(wǎng)絡(luò)文本數(shù)據(jù)到本地內(nèi)存的四種實(shí)現(xiàn)方法示例

    這篇文章主要介紹了Python下載網(wǎng)絡(luò)文本數(shù)據(jù)到本地內(nèi)存的四種實(shí)現(xiàn)方法,涉及Python網(wǎng)絡(luò)傳輸、文本讀寫、內(nèi)存I/O、矩陣運(yùn)算等相關(guān)操作技巧,代碼中包含了較為詳盡的注釋說(shuō)明便于理解,需要的朋友可以參考下
    2018-02-02
  • Python之dict(或?qū)ο?與json之間的互相轉(zhuǎn)化實(shí)例

    Python之dict(或?qū)ο?與json之間的互相轉(zhuǎn)化實(shí)例

    今天小編就為大家分享一篇Python之dict(或?qū)ο?與json之間的互相轉(zhuǎn)化實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 詳解TensorFlow訓(xùn)練網(wǎng)絡(luò)兩種方式

    詳解TensorFlow訓(xùn)練網(wǎng)絡(luò)兩種方式

    本文主要介紹了TensorFlow訓(xùn)練網(wǎng)絡(luò)兩種方式,一種是基于tensor(array),另外一種是迭代器,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 快速查詢Python文檔方法分享

    快速查詢Python文檔方法分享

    這篇文章主要介紹了快速查詢Python文檔方法分享,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • python爬蟲分布式獲取數(shù)據(jù)的實(shí)例方法

    python爬蟲分布式獲取數(shù)據(jù)的實(shí)例方法

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python爬蟲分布式獲取數(shù)據(jù)的實(shí)例方法,有興趣的朋友們可以參考下。
    2020-11-11

最新評(píng)論

闸北区| 高唐县| 镇远县| 托克托县| 三台县| 阜平县| 永靖县| 太保市| 济阳县| 桐乡市| 武乡县| 汶川县| 福州市| 兴业县| 大安市| 太仓市| 六安市| 左贡县| 灌阳县| 孟州市| 台南县| 集贤县| 米泉市| 徐州市| 逊克县| 甘泉县| 庐江县| 桑植县| 百色市| 新化县| 巴南区| 霍城县| 乌拉特中旗| 惠来县| 勐海县| 小金县| 会理县| 霞浦县| 马公市| 绥阳县| 南昌市|