1

このようなURLを含むメールをdjangoに送信させる必要があります

http://www.mysite.org/history/

「履歴」は次のように取得されます。

history_url = urlresolvers.reverse('satchmo_order_history')

history_url は、メールを送信する関数に渡すパラメーターであり、正しく '/history/' を生成します。しかし、どうすれば最初の部分を取得できますか? (http://www.mysite.org)

編集 1

このようにすることについて何か間違っていることや移植性がないことはありますか? :

history = urlresolvers.reverse('satchmo_order_history')
domain = Site.objects.get_current().domain
history_url = 'http://' + domain + history
4

1 に答える 1

6

HttpRequestインスタンスにアクセスできる場合は、次を使用できますHttpRequest.build_absolute_uri(location)

absolute_uri = request.build_absolute_uri(relative_uri)

別の方法として、サイト フレームワークを使用して取得することもできます。

import urlparse
from django.contrib.sites.models import Site

domain = Site.objects.get_current().domain
absolute_uri = urlparse.urljoin('http://{}'.format(domain), relative_uri)

Re: 編集1

を使用する傾向がありますurlparse.join。これは標準ライブラリにあり、技術的には URI を組み合わせる最も Pythonic な方法ですが、あなたのアプローチも問題ないと思います。

于 2012-11-22T19:56:00.023 に答える