2016-08-05 54 views
1

我已經設置我的Django(1.8)管理員以允許超級用戶以交互方式創建新用戶。我的用戶模型是使用AbstractUser這意味着我的管理文件看起來像這樣定製的:Django管理員:在瀏覽器中創建用戶

admin.py

from django.contrib import admin 
from app.models import CPRUser 

class UserAdmin(admin.ModelAdmin): 

    model = CPRUser 
    extra = 1 

admin.site.register(CPRUser, UserAdmin) 

這裏是模型:

class CPRUser(AbstractUser): 
    student = models.PositiveIntegerField(verbose_name=_("student"), 
              default=0, 
              blank=True) 
    saved = models.IntegerField(default=0) 

這似乎工作確定,我可以通過管理員並設置新用戶的密碼,用戶名和所有其他自定義字段。但是,當我嘗試使用新創建的用戶登錄時,身份驗證過程的某些部分會失敗。我從使用auth_views.login視圖和樣板django登錄模板的頁面登錄。

另一方面,如果我在django shell中使用manage.py createsuperusercreateuser()創建新用戶,這些用戶可以很好地登錄。這導致我懷疑它是與密碼存儲或哈希處理 - 目前在管理員,我可以輸入一個新的用戶密碼。事情是,那是我想要做的。我怎樣才能得到這個理想的結果 - 我希望非IT管理者(其細節我不會)能夠輕鬆地在管理員中創建新用戶。我意識到這種系統的風險。

「中的‘添加用戶’管理頁面比,它需要您選擇一個用戶名和密碼標準的管理頁面不同,讓您編輯其餘部分之前:

該文檔上setting this interactive user creation up一個部分似乎是矛盾的的用戶領域。「

,然後幾個段落後:

「用戶密碼不會在管理中顯示(也存儲在數據庫中)」

這是我管理的屏幕截圖:

enter image description here

我該如何讓Django接受通過管理員交互創建的用戶的登錄嘗試?

+0

你可以提供關於認證失敗的更多細節嗎?即確切的例外和信息是什麼? –

+0

@BasicWolf這是問題的一部分 - 挖掘身份驗證失敗的最簡單方法是什麼?我的代碼都沒有進行身份驗證 - 這都是django auth黑匣子。 –

+0

- 但是,當我嘗試使用新創建的用戶登錄時,身份驗證過程的某些部分失敗。 - 那麼,您如何嘗試登錄新創建的用戶? –

回答

3

按照documentation

如果您的自定義用戶模型擴展django.contrib.auth.models.AbstractUser,你可以使用Django的現有django.contrib.auth.admin.UserAdmin類。

因此,擴展UserAdmin應該做的伎倆。