【问题标题】:Customize Django Admin user password change form自定义 Django Admin 用户密码更改表单
【发布时间】:2019-12-09 15:50:48
【问题描述】:

我使用 AbstractBaseUser 自定义了我的用户模型。

一切正常,但是当我在 Django 管理界面和我们更改用户密码的表单中时,除了 new password 1 和 new password 2 字段外,我还在文本框中看到他们的电子邮件:

如何从我的管理员更改密码表单中删除他们的电子邮件地址?有没有我可以继承的特殊 Django 表单?

【问题讨论】:

  • 您的图片不可见。请更正。
  • 根本看不到还是很小?
  • 不行,图片有问题。
  • 好的,我上传了一张新图片。我可以在所有浏览器+隐身模式上看到它。

标签: django admin


【解决方案1】:

我认为您必须自定义 password_reset 视图。 请阅读文档here。

如果你想更进一步,你可以覆盖PasswordResetForm:

from django.contrib.auth.forms import PasswordResetForm

class FooPasswordResetForm(PasswordResetForm):
    ...

然后更新您的 URL,不要忘记将您的表单传递给 password_reset_form 参数:

from django.contrib.auth import views as auth_views
from myapp.forms import FooPasswordResetForm

urlpatterns = [
    ...
    url(
        '^password_reset/',
        auth_views.password_reset,
        {'password_reset_form': FooPasswordResetForm},
    )
]

请也看看这个question 我的回答受到了这个问题的回答的启发。

【讨论】:

  • 感谢您的回答。为了澄清我在管理面板中谈论的是一个看起来像 www.example.com/admin/myapp/user/1/password/ 的网址。我已经有一个用户可以使用的密码重置视图。
  • 你知道如何解决这个@bones225 吗?我有一个类似的问题
  • @gbrennon 不幸的是,我不再从事那个项目了——我不相信我曾经解决过它。不过有几点提示: 1. 使用 AbstractUser -- 如果您还没有锁定,请不要使用 AbstractBaseUser! 2. 看看你可以做些什么来覆盖该字段以使电子邮件只读。
【解决方案2】:

将用户名添加为隐藏字段为我解决了这个问题。

class CustomUserAdmin(UserAdmin):
    readonly_fields = ['username']

我使用电子邮件作为用户名。

【讨论】:

    猜你喜欢
    • 2021-07-07
    • 2011-10-12
    • 2013-03-05
    • 1970-01-01
    • 2020-05-04
    • 2015-12-12
    • 2011-12-14
    • 2018-02-22
    • 1970-01-01
    相关资源
    最近更新 更多