仅显示Web2py中包含记录的字段

时间:2015-04-16 01:17:30

标签: python web2py

我在db.define_table('mydatabase', Field('a_1'), ...到Field('a_9')然后Field('b_1'), ...到Field('b_9')Field('c_1','upload'),有以下字段。 ..to Field('c_9','upload')

这总共增加了27 Fields

Fieldsab并非所有9 c都会有记录。但是,如果Field('a_1')有记录,那么所有其他字段也会有记录。

在视图中,我只想显示带有记录的Fields。我通过在if中使用View语句实现了这一点。这可以按预期工作,但我想知道这是否是实现此目的的最佳方式,如果这不是最佳方式,我想知道为什么这样我可以学习和改进我的代码。

我在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}}

然后我在if中重复上述View语句9次,每次都在a_1b_1c_1中相应地更改数字。< / p>

这样可以正常使用但有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用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}}