2013-03-07 300 views
0

我剛開始使用django註冊。我有兩個問題:Django註冊:如何防止登錄的用戶註冊?

  1. 如何防止登錄用戶進入註冊頁面?

  2. 激活後如何自動登錄用戶?

我更喜歡不更改應用程序本身的任何代碼。

對於問題2,我已經閱讀了它所說的編寫「一個函數來偵聽適當的信號;你的函數應該設置用戶的後端屬性到正確的認證後端,然後調用Django .contrib.auth.login()記錄用戶。「我不知道django足夠了解這意味着什麼或如何實現。你們能幫助/指引我正確的方向嗎?

編輯:

嘗試做一些信號,尚不能工作,不知道什麼是錯的:

def loginActivationCallback(sender, user, request, **kwargs): 
    print user 
    print "registered" 

user_registered.connect(loginActivationCallback) 

而且因爲我使用Django 1.5,我沒有做到點子安裝django-註冊(不完全支持1.5),而是將註冊文件夾複製到我的項目中。不確定這是否會影響信號。

回答

3

只要你可以做的是檢查您註冊查看

if request.user.is_authenticated: 
    #redirect user to the profile page 
    return HttpResponseRedirect('/profile/') 
+0

我不想改變Django的註冊,因爲它是一個第三方應用程序 – Derek 2013-03-07 05:17:18

+0

你可以在整個網站訪問request.user應用它wharever你想 – masterofdestiny 2013-03-07 05:18:40

+0

的意見是在第三方應用程序,所以這些被調用,不知道你的意思是通過訪問request.user從這些意見沒有訪問第三方的代碼 – Derek 2013-03-07 05:22:43

0
from registration.signals import user_activated 

def login_user(sender, user, request, **kwargs): 
    user.backend='django.contrib.auth.backends.ModelBackend' 
    login(request,user) 
user_activated.connect(login_user) 
+0

我不喜歡改變Django註冊,因爲它是一個第三方應用程序 – Derek 2013-03-07 05:16:56

+0

不太確定您的意思,請問您可以 更加詳細一些? django註冊應用程序的代碼在這裏:https://bitbucket.org/ubernostrum/django-registration – Derek 2013-03-07 05:23:46

+0

Django註冊的代碼鏈接在上面。我只是安裝了應用程序,提供了正確的模板,並且django-registration的url和views也處理了其他所有內容。 – Derek 2013-03-07 05:29:04