Django自定义用户管理change_password
我成功地使用自定义用户模型与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