如何将SQL TABLE结果链接到外部页面?

时间:2012-04-30 19:56:26

标签: web2py

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

3 个答案:

答案 0 :(得分: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存储在单独的表中。

答案 1 :(得分: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))

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

答案 2 :(得分: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://”。这导致了相同的链接地址问题。