3

Web2py 新手,所以我的问题可能不太清楚。我正在尝试制作货运跟踪页面,并且我有一个简单的数据库,其中包含跟踪号和托运人 ID。按照示例,我的应用程序可以显示新记录并将其添加到货件数据库。现在我想添加指向显示记录的链接,这些链接会将您带到承运人的该跟踪号的跟踪页面。跟踪页面 URL 将根据将附加跟踪号的每个发货人的默认字符串创建。如何将结果链接到相应的跟踪页面?

4

3 回答 3

2

如果您通过 SQLFORM、Crud、SQLTABLE 或 SQLFORM.grid 显示记录,您可以设置跟踪号字段的“represent”属性以显示链接:

db.define_table('shipper',
    Field('name'),
    Field('url'),
    format='%(name)s')

db.define_table('shipment',
    Field('tracking_number', represent=lambda value, row: A(value,
        _href=row.shipper.url + value)),
    Field('shipper', db.shipper))

这假设您将托运人 URL 存储在单独的表中。

于 2012-04-30T20:28:56.240 回答
1

我把它改成了这个,它几乎可以工作:

db.define_table('carrier',
    Field('name',),
    Field('url',),
    format='%(name)s')

db.define_table('shipment',
    Field('shipment_id', represent=lambda value,row: \
        A(value, _href=(row.carrier.url + value, ))),
    Field('carrier', db.carrier))

ship_id 是一个链接,但它指向 'http://127.0.0.1:8000/tracker/default/www.bing.com/search?q=trumpet',其中 'www.bing.com/search?q='和 'trumpet' 分别是 carrier.url 和 shipping.shipment_id 值(仅用于测试)。我怎样才能离开'http://127.0.0.1:8000/tracker/default/'?

于 2012-05-01T18:16:04.780 回答
0

好的,最终得到:

db.define_table('carrier',
    Field('name',),
    Field('url',),
    format='%(name)s')

db.define_table('shipment',
    Field('shipment_id', represent=lambda value,row: \
        A(value, _href=row.carrier.url + value)),
    Field('carrier', db.carrier))

有两个问题。首先是 href 的语法。我上面添加的答案中的版本没有报错,但是导致链接地址问题。其次,输入的 URL 没有“http://”。这导致了相同的链接地址问题。

于 2012-05-01T19:28:32.220 回答