【问题标题】:Web2py A helper inside TRWeb2py TR 内的助手
【发布时间】:2016-09-10 21:53:41
【问题描述】:

是否可以让 A 助手在 TR 中创建链接,如下所示:

    table=TABLE(*[TR(A(*students, URL('pupil_details', vars=dict(fname=students[0], sname=students[2], year=students[5])))) for students in students_on_course])

这是在控制器内部。最终我想让每个元素用 TD 分隔,这样我就可以很好地格式化结果表。

我希望 TR 成为另一个视图的链接,理想情况下是允许 整个 TR 成为一个链接。但是当我尝试上述方法时,我得到一个语法错误说:只有命名参数可以跟随 *expression

您可以让 TABLE 助手生成包含链接的 TR 吗?

谢谢大家

【问题讨论】:

    标签: html web2py helper


    【解决方案1】:
    A(*students, URL(...))
    

    *students 之后添加一个额外的位置参数,这在 Python 中是不允许的(*expression 必须跟在任何其他位置参数之后)。

    在任何情况下,您都不能通过位置参数指定锚标记的“href”,而是必须使用 _href 关键字参数:

    A(*students, _href=URL(...))
    

    您可能还需要重新考虑使用*students。从您的URL() 代码看来,students 是与单个学生关联的属性列表或元组。您的代码相当于:

    A(student[0], student[1], student[2], ...)
    

    这将简单地连接students 列表的所有元素,例如:

    <a href="/yourapp/pupil_details/...">FirstnameSurnameYear</a>
    

    相反,您可能希望使用列表元素创建带有一些分隔符的格式化字符串(甚至像' '.join(students) 这样简单)。

    【讨论】:

    • 我明白了,这就是我的 *students 没有生成格式良好的表格的原因吗?因为列表元素被连接起来了?我认为 TR 助手会为我将列表元素拆分为 TD。我一直想知道为什么它似乎不能制作一个格式良好的表格。大概要做到这一点,我肯定必须使用 TD 助手?谢谢@Anthony
    • 如果您将一个列表传递给TR,它会将每个元素包装在TD 中,但A(*students, ...) 不会生成锚元素列表——它会生成单个锚元素。此外,您想要生成的内容还不是很清楚——看起来您希望 students 列表中的每个项目都位于单独的表格单元格中,但为每个单元格生成的 URL 似乎包含列表中的多个项目。随时更新问题以详细说明您真正在寻找什么。
    • 及时更新,很好的建议,谢谢。我希望将 A 放在 TR 中,我可以将元素分开,然后将 A 应用于所有元素。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 2014-01-03
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多