Web2py は初めてなので、私の質問はあまり明確ではないかもしれません。貨物追跡ページを作成しようとしていますが、追跡番号と荷送人 ID を含む単純なデータベースがあります。例に従って、私のアプリケーションは新しいレコードを表示し、出荷データベースに追加できます。ここで、表示されたレコードに、その追跡番号の運送業者の追跡ページに移動するリンクを追加したいと考えています。追跡ページの URL は、追跡番号が追加される各配送業者のデフォルトの文字列から作成されます。結果を適切な追跡ページへのリンクにするにはどうすればよいですか?
3 に答える
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 を別のテーブルに保存していることを前提としています。
これを次のように変更しましたが、ほとんど機能します。
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))
shipping_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/」をオフにするにはどうすればよいですか?
わかりました、最終的に:
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))
2 つの問題がありました。まず、href の構文です。上記で追加した回答のバージョンではエラーは発生しませんでしたが、リンク アドレスの問題が発生しました。次に、「http://」なしで URL が入力されていました。これにより、同じリンク アドレスの問題が発生しました。