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/