日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Django View使用装饰器捕获数据库连接异常

發布時間:2025/3/21 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django View使用装饰器捕获数据库连接异常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

“來不及解釋了”,直接上代碼。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 from?django.shortcuts?import?render,?redirect from?models?import?Hosts from?django?import?forms #?Create?your?views?here. def?database_error(request,?message): ????if?message?==?''?or?message?is?None: ????????message?=?'Error?detail?is?not?given.' ????context?=?{ ????????'database_error':?message, ????} ????return?render(request,?'exception/error.html',?context) def?database_error_decorator(func): ????from?functools?import?wraps ????from?django.utils.decorators?import?available_attrs ????def?decorator(view_func): ????????@wraps(view_func,?assigned=available_attrs(view_func)) ????????def?_wrapped_view(request,?*args,?**kwargs): ????????????try: ????????????????return?view_func(request,?*args,?**kwargs) ????????????except?Exception?as?e: ????????????????return?database_error(request,?message=e.message) ????????return?_wrapped_view ????return?decorator(func) @database_error_decorator def?list_hosts(request): ????hosts?=?Hosts.objects.order_by('-hosts_hosts') ????context?=?{ ????????'hosts':?hosts ????} ????return?render(request,?'inventory/hosts/list_hosts.html',?context)

????如果因為數據庫連接異常或者數據庫上的原因導致view無法獲取數據庫中的內容所產生的報錯如果直接打印給用戶,則用戶可能一頭霧水,用戶體驗很不友好。因此如果可能的話可以在應用啟動前一個簡單的自檢,檢查數據庫是否可以正常連接等,但是這種檢查一般不夠細致到檢查數據庫中的某個表某個column是否存在,那么是時候該捕獲一下這些異常了。

????如果每一個view中的每一個與數據庫相關的def都去重復捕獲這些異常,顯然不是一個很好的做法。一個比較好的做法就是使用裝飾器來捕獲這些異常。裝飾器的寫法完全可以參照“from django.contrib.auth.decorators import login_required”中的寫法,本文的例子也是參照這一寫法。其實每一個種編程學習起來都是相似的,無論是Shell還是Python,自帶的方法中給出了很多好的示例供我們學習,不重復制造輪子,站在巨人的肩膀上能看的更遠!

tag:裝飾器捕獲異常,裝飾器,異常

--end--



本文轉自 urey_pp 51CTO博客,原文鏈接:http://blog.51cto.com/dgd2010/1872599,如需轉載請自行聯系原作者


總結

以上是生活随笔為你收集整理的Django View使用装饰器捕获数据库连接异常的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。