真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

DjangoView使用裝飾器捕獲數(shù)據(jù)庫連接異常

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

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、涿鹿ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的涿鹿網(wǎng)站制作公司

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)

    如果因為數(shù)據(jù)庫連接異?;蛘邤?shù)據(jù)庫上的原因?qū)е聉iew無法獲取數(shù)據(jù)庫中的內(nèi)容所產(chǎn)生的報錯如果直接打印給用戶,則用戶可能一頭霧水,用戶體驗很不友好。因此如果可能的話可以在應(yīng)用啟動前一個簡單的自檢,檢查數(shù)據(jù)庫是否可以正常連接等,但是這種檢查一般不夠細(xì)致到檢查數(shù)據(jù)庫中的某個表某個column是否存在,那么是時候該捕獲一下這些異常了。

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

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

--end--


文章題目:DjangoView使用裝飾器捕獲數(shù)據(jù)庫連接異常
分享鏈接:http://weahome.cn/article/pddgcd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部