首页 文章

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

提问于
浏览
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') 有以下字段

这相当于总计27 Fields

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

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

这就是我在_1419844中所拥有的:

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

这就是我在_1419846中所拥有的:

{{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 中重复上述 if 语句9次,每次都在 a_1b_1c_1 中相应地更改数字 .

这工作正常,但有更好的方法吗?

1 回答

  • 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}}
    

相关问题