2011-03-01 67 views
0

我有一個插件與功能:AtrributeError例外

def view(request): 
     year = Entry.archive.aggregate(aggregator('pub_date_from'))\ 
                  .values()[0].year 
     url = reverse('%s:blog_archive_year' % get_language(), 
         kwargs={'year': year}) 
     return redirect(url) 

的問題是,雖然分配year它看起來在第一個值。如果裏面有東西,它會很好用,但如果不是的話 - AttributeError尖叫.values()[0].year不包含任何數據。我試圖添加嘗試/例外,但我意識到django.core.exceptions中沒有AtrributeError。我怎麼解決這個問題?給出一個默認值或什麼都不會有幫助,因爲它看起來會引發錯誤。

回答

0

AttributeError是一個內置的異常,所以你可以這樣做:

try: 
    year = Entry.archive.aggregate(aggregator('pub_date_from')).values()[0].year 
    url = reverse('%s:blog_archive_year' % get_language(), 
        kwargs={'year': year}) 
    return redirect(url) 
except AttributeError, e: 
    return redirect(somewhere_else) 

(即你不需要輸入任何東西使用AttributeErro,你可以使用它)。

+0

謝謝,現在一切正常:)對不起,愚蠢的假設。也許你知道任何鏈接在哪裏可以找到這樣的內置異常或類似的東西? – JackLeo 2011-03-01 10:20:26

+0

@JackLeo - http://docs.python.org/library/exceptions.html上有一個列表 – 2011-03-01 10:41:17