2013-01-04 64 views
3

我想保存用戶註冊時所用的網站。我感興趣的是用戶在註冊前在我的網站上看到的第一頁的HTTP推薦人。Django:在用戶註冊時保存referer

我該如何實現它?

+1

簡單的方法:在會話中存儲'HTTP referer'在頁面加載時使用ajax,或發送'Http Referer'以及註冊表單發佈數據。 –

+0

@AamirAdnan謝謝。 – piokuc

回答

4

首先,將推薦人保存到會話中。你或許應該這樣做某種中間件:

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

+0

謝謝。不知道這是否重要,但我正在使用django註冊模塊註冊過程。我在UserProfile中保存了關於用戶的所有額外信息,所以這就是我保存在'request.session ['initial_referer']' – piokuc

+0

中保存的內容非常感謝您的回答。 – Feanor