django - 如何覆盖管理员的密码更改 View 逻辑?

标签 django django-admin

Django 文档说要使用 path('accounts/', include('django.contrib.auth.urls')) 但我不希望它有 "accounts/"url我只希望它保持为“admin/”。但是我尝试像这样覆盖它

# project urls.py
urlpatterns = [
    path('admin/', admin.site.urls),
    path('admin/password_change/', CustomPasswordChangeView.as_view(), name='password_change'),
]
from django.contrib.auth.views import PasswordChangeView
from django.contrib.auth.forms import PasswordChangeForm

class CustomPasswordChangeView(PasswordChangeView):
    form_class = PasswordChangeForm
    success_url = reverse_lazy('password_change_done')
    template_name = 'registration/password_change_form.html'
    title = _('Password change21312312313132133')

    def get_form_kwargs(self):
        kwargs = super().get_form_kwargs()
        kwargs['user'] = self.request.user
        print(kwargs['user'])
        print(self.success_url)
        return kwargs

    def form_valid(self, form):
        form.save()
        # Updating the password logs out all other sessions for the user
        # except the current one.
        update_session_auth_hash(self.request, form.user)
        return super().form_valid(form)

我试图更改 title 变量值,以便查看它是否有效,但它似乎没有使用我制作的自定义 View 。知道为什么以及如何解决它吗?

最佳答案

URL 模式是自上而下读取的,因此如果您先将 url 模式与 password_change 互换,那么它会优先,如果存在重复项,它将覆盖默认的管理 url。

关于django - 如何覆盖管理员的密码更改 View 逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65930113/

相关文章:

由于重复键,带有固定装置的 Django TestCase 导致 IntegrityError

python - 将 Django 应用程序映射到 Docker 容器,使用 URL 寻址

django - 字段不显示在 django 管理中

Django - 管理员 - 带有 ' * ' 的必填字段

python - django,如何在 Q 中使用计数

django - 在 Django 中动态更改 QuerySet 对象

python - ModelForm 和 ModelSelect2Widget (django-select2)

Python Django - 无法 pickle <type 'cStringIO.StringO">

django - 在 nginx 上更改标题 'Django administration' 文本

django-models - 如果有值,如何在django admin中有条件地显示字段?