2012-04-30 35 views
3

新的Web2py,所以我的問題可能不太清楚。我正在嘗試製作貨件追蹤頁面,並且我有一個簡單的數據庫,其中包含追蹤編號和託運人編號。遵循這些示例,我的應用程序可以顯示和添加新記錄到貨件數據庫。現在我想添加指向顯示記錄的鏈接,這些鏈接將帶您進入該運營商的跟蹤號碼的跟蹤頁面。跟蹤頁面的URL將由追蹤號碼將追加到的每個發件人的默認字符串創建。我怎樣才能將結果轉化爲適當的跟蹤頁面的鏈接?如何使SQLTABLE結果鏈接到外部頁面?

回答

2

如果要顯示通過SQLFORM記錄,界面污物,SQLTABLE,或SQLFORM.grid,你可以設置「代表」跟蹤號碼字段屬性,顯示的鏈接:

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)) 

這是假設你將託運人網址存儲在單獨的表格中。

+0

當我嘗試添加貨件時出現此錯誤:AttributeError:'NoneType'對象沒有屬性'url' – user1011625

+0

感謝您的建議!我可以調整它,並通過[Web2py用戶組]的人員(https://groups.google.com/forum/?fromgroups#!topic/web2py/Z1Zng7WmECE)提供一些幫助。請查看下面的答案以獲得最終版本。 – user1011625

+0

行,做了一個更正。 – Anthony

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/'?

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的語法。我在上面添加的答案中的版本沒有給出錯誤,但導致鏈接地址問題。其次,這些網址是在沒有「http://」的情況下輸入的。這導致了相同的鏈接地址問題。

相關問題