我成功地使用自定義用戶模型與Django。 最後一件工作是超級用戶更改任何用戶密碼的「AdminChangePasswordForm」。Django自定義用戶管理change_password
目前從管理員更改密碼鏈接:MYAPP:用戶給出了404
答案。
覆蓋get_urls
和覆蓋UserChangeForm有正確的URL。
我成功地使用自定義用戶模型與Django。 最後一件工作是超級用戶更改任何用戶密碼的「AdminChangePasswordForm」。Django自定義用戶管理change_password
目前從管理員更改密碼鏈接:MYAPP:用戶給出了404
答案。
覆蓋get_urls
和覆蓋UserChangeForm有正確的URL。
看來它在1.7.x一個 「錯誤」,並固定在1.8.x,其中設置的URL名稱,這樣你就必須重寫get_urls()
:
from django.contrib.auth.admin import UserAdmin as AuthUserAdmin
from django.conf.urls import url
class UserAdmin(AuthUserAdmin):
def get_urls(self):
return [
url(r'^(.+)/password/$', self.admin_site.admin_view(self.user_change_password), name='auth_user_password_change'),
] + super(UserAdmin, self).get_urls()
網址:
password_change_url = urlresolvers.reverse('admin:auth_user_password_change', args=(1,))
好吧,我正在使用1.8。將盡快嘗試,並讓您知道 – straykiwi
URL在哪裏去?我將它添加到自定義UserAdmin,但它不能反轉URL。即使將「身份驗證」更改爲「用戶」(我的應用程序名稱)也一樣。另外,什麼是1的靜態參數? – straykiwi
如果您使用1.8或者不需要通過用戶標識獲取password_change_url,則答案對您無用。 「1」只是一個例子。你可以發佈你的'UserAdmin'嗎?更改密碼鏈接:https://github.com/django/django/blob/stable/1.8.x/django/contrib/auth/forms.py#L103,UserAdmin的UserChangeForm:https://github.com/django /django/blob/stable/1.8.x/django/contrib/auth/admin.py#L57 – JimmyYe
所以我有類似的問題。當我試圖從管理員更改用戶密碼時,我將URL設置爲「/ admin/accounts/siteuser/password /」(siteuser是我的自定義用戶模型的名稱),404錯誤信息爲:「user key with uu u u'密碼「不存在」。 調查顯示,問題是由於django-authtools(1.4.0)中的錯誤,因爲我使用NamedUserAdmin類來繼承。
所以解決方法是,(如果你需要從任何自定義UserAdmin像NamedUserAdmin繼承的Django authtools):
from django.contrib.auth.forms import UserChangeForm
from authtools.admin import NamedUserAdmin
class SiteUserAdmin(NamedUserAdmin):
...
form = UserChangeForm
...
或從默認的Django UserAdmin只是繼承:
from django.contrib.auth.admin import UserAdmin
class SiteUserAdmin(UserAdmin):
pass
你能發佈你的用戶模型? –
是的,不是全部,但你可以看到總體思路 – straykiwi