Django自定义用户管理员更改密码

2024-10-01 00:20:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我成功地使用了django的自定义用户模型。 最后一件要做的事情是“AdminChangePasswordForm”,超级用户可以更改任何用户的密码。在

当前的更改密码链接来自管理员:myapp:用户给出404

答案。在

重写get_url

并重写UserChangeForm以获得正确的url。在


Tags: django答案用户模型url密码get链接
2条回答

它似乎是1.7.x中的一个“bug”,并在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()

网址:

^{pr2}$

所以我遇到了类似的问题。当我试图将用户密码从admin更改为“/admin/accounts/siteuser/password/”(siteuser是我的自定义用户模型的名称)时,出现404错误并显示以下消息:“主键为u'password'的用户对象不存在。” 调查表明,这个问题是由于djangoauthtools(1.4.0)中的bug造成的,因为我使用NamedUserAdmin类继承。

因此,解决方案是(如果您需要从任何自定义UserAdmin(如从django authtools继承NamedUserAdmin):

from django.contrib.auth.forms import UserChangeForm
from authtools.admin import NamedUserAdmin
class SiteUserAdmin(NamedUserAdmin):
    ...
    form = UserChangeForm
    ...

或者从默认的django UserAdmin继承:

^{pr2}$

相关问题 更多 >