2012-08-12 99 views
0

我希望用戶必須在首次登錄後填寫表單。對於我已經嘗試的信號:首次登錄時打開頁面

# -*- coding: utf-8 -*- 
from django.contrib.auth.signals import user_logged_in 
from django.http import HttpResponseRedirect 
from django.core.urlresolvers import reverse 

[...] 

def umleiten(sender, user, request, **kwargs): 
    print reverse("first_login") 
    """Check if a user logged on for the first time.""" 
    return HttpResponseRedirect(reverse("first_login")) 

user_logged_in.connect(umleiten) 

函數「umleiten」被調用,但它不會被轉發到適當的頁面。 有沒有辦法在之後調用函數我可以從中轉發到另一個站點。

+0

請郵寄其中u提到的網址,將倒車時first_login調用代碼,以及first_login代碼也.. – 2012-08-12 10:13:50

回答

0

你可以,也許應該使用中間件爲

class FirstLoginCheckMiddleware(object): 
    def process_request(self, request): 

     is_form_page = request.path in (
      settings.FORM_PAGE 
     ) 

     if (not is_form_page) and request.user.is_authenticated() and (not request.user.profile.filled_out_the_form): 
      return HttpResponseRedirect(settings.FORM_PAGE) 
     return None 

在哪裏,例如你延長用戶使用具有一旦用戶做了什麼,你希望他們待辦事項它獲取查了BooleanField對象:

class UserProfile(models.Model): 
    filled_out_the_form = field.BooleanField(default=False) 
    # ... 
+0

謝謝! 我必須機會 is_form_page = request.path in(settings.FORM_PAGE) to is_form_page = settings.FIRST_LOGIN_FORM_PAGE in(request.path) – senden9 2012-08-12 12:59:37

相關問題