如何覆盖管理员的密码更改视图逻辑?
How to override admin's password change view logic?
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)
我试图更改标题变量值,以便查看它是否有效,但它似乎没有使用我制作的自定义视图。知道为什么以及如何解决它吗?
URL 模式是自上而下阅读的,因此如果您先将 url 模式与 password_change 互换,那么它将优先并覆盖默认管理 url 如果存在重复项。
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)
我试图更改标题变量值,以便查看它是否有效,但它似乎没有使用我制作的自定义视图。知道为什么以及如何解决它吗?
URL 模式是自上而下阅读的,因此如果您先将 url 模式与 password_change 互换,那么它将优先并覆盖默认管理 url 如果存在重复项。