3

サインアップ時にユーザーがアクセスしたサイトを保存したいのですが。サインアップする前にユーザーが自分のサイトで最初に見たページのHTTPリファラーに興味があります。

どうすれば実装できますか?

4

1 に答える 1

6

まず、リファラーをセッションに保存します。おそらく、ある種のミドルウェアでこれを行う必要があります。

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を参照してください

于 2013-01-04T18:42:16.470 に答える