2015-04-16 28 views
0
記錄僅能顯示領域

我在db.define_table('mydatabase',Field('a_1'),以下領域......到Field('a_9')然後Field('b_1'), ......到Field('b_9')Field('c_1','upload'), ......到Field('c_9','upload')用的web2py

這加起來一共有27 Fields

不是ab,並c所有9 Fields將永遠有一個記錄。但是,如果Field('a_1')有記錄,則所有其他字段也會有記錄。

在視圖中,我只想顯示帶有記錄的Fields。我通過View中的if語句實現了此目的。這是按預期工作的,但我想知道這是否是實現這一目標的最佳方法,如果這不是最好的方法,我想知道爲什麼我可以學習和改進我的代碼。

這是我必須在Controller

def show(): 
    x = db.mydatabase(request.args(0,cast=int)) 
    return dict(x=x)  

這是我在View

{{if x.a_1:}} 
<p style="color:white">some text {{=x.a_1}}</p> 
<a class="link" href="{{=URL('download', args=x.c_1)}}"><p>some text</p></a> 
<p>some text {{=x.b_1}}</p><br> 
{{pass}} 

然後我重複了View 9倍以上if說法,每次在a_1b_1c_1相應地更改數字。

這工作正常,但有沒有更好的辦法?

回答

0

而不是重複代碼9次,你可以使用一個for循環:

{{for i in xrange(1, 10):}} 
    {{if x['a_%s' % i]:}} 
    <p style="color:white">some text {{=x['a_%s' % i]}}</p> 
    <a class="link" href="{{=URL('download', args=x['c_%s' % i])}}"><p>some text</p></a> 
    <p>some text {{=x['b_%s' % i]}}</p><br> 
    {{pass}} 
{{pass}}