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