サインアップ時にユーザーがアクセスしたサイトを保存したいのですが。サインアップする前にユーザーが自分のサイトで最初に見たページのHTTPリファラーに興味があります。
どうすれば実装できますか?
サインアップ時にユーザーがアクセスしたサイトを保存したいのですが。サインアップする前にユーザーが自分のサイトで最初に見たページのHTTPリファラーに興味があります。
どうすれば実装できますか?
まず、リファラーをセッションに保存します。おそらく、ある種のミドルウェアでこれを行う必要があります。
import urlparse
class SaveReferrerMiddleware(object):
def process_request(self, request):
referer = request.META.get('HTTP_REFERER', None)
if referer is not None:
domain = urlparse.urlparse(referer).netloc
if domain not in ['www.yoursite.com', 'yoursite.com']:
# External referer
request.session['initial_referer'] = referer
(もちろん、yoursite.comなどを適宜変更してください)
次に、サインアップビューコードで、セッションからのリファラーをユーザーオブジェクトに保存します。
もちろん、これはその情報を保存する場所があるかどうかに依存します。カスタムユーザーオブジェクトがある場合は、そのフィールドを作成できます。Django 1.5より前では、AUTH_PROFILE_MODULEを使用してユーザークラスを拡張できます。https://docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-the-existing-user-modelを参照してください