如何在Django UserAdmin中配置Staff用户改密的自定义表单?
问题解决方案
一、全局RTL布局下设置部分字段为LTR方向
1. 全局开启RTL
在项目根模板的<html>标签添加dir="rtl"属性,或者通过全局CSS统一设置:
html, body { direction: rtl; }
2. 单独设置字段为LTR
表单字段层面(推荐)
在自定义表单的字段widget中直接指定dir="ltr"属性,精准控制单个字段:
from django import forms class YourCustomForm(forms.Form): # 手机号、邮箱这类需要LTR的字段示例 phone_number = forms.CharField( widget=forms.TextInput(attrs={'dir': 'ltr', 'placeholder': '请输入手机号'}) ) email = forms.EmailField( widget=forms.EmailInput(attrs={'dir': 'ltr'}) )
CSS层面兜底
如果需要批量处理同类型字段,可给目标字段添加自定义类,再通过CSS强制设置LTR:
.ltr-field { direction: ltr !important; text-align: left; }
之后在表单widget中添加class='ltr-field'即可生效。
二、配置Staff用户在Admin后台改密使用CustomPasswordChangeForm
方法1:通过URL覆盖默认密码更改视图
在项目的urls.py中,将自定义表单绑定到Admin的密码更改URL,需放在默认Admin路由之前:
from django.contrib import admin from django.contrib.auth import views as auth_views from .forms import CustomPasswordChangeForm urlpatterns = [ # 优先匹配自定义的密码更改路由 path('admin/password_change/', auth_views.PasswordChangeView.as_view( form_class=CustomPasswordChangeForm, template_name='admin/password_change.html' # 复用Admin默认模板 ), name='admin_password_change'), path('admin/', admin.site.urls), ]
方法2:自定义AdminSite类(全局统一配置)
创建自定义AdminSite并重写密码更改视图,替换默认站点:
# yourapp/admin.py from django.contrib.admin import AdminSite from django.contrib.auth.views import PasswordChangeView from .forms import CustomPasswordChangeForm class CustomAdminSite(AdminSite): def password_change_view(self, request, extra_context=None): # 调用密码更改视图并指定自定义表单 return PasswordChangeView.as_view( form_class=CustomPasswordChangeForm, template_name='admin/password_change.html' )(request, extra_context=extra_context) # 实例化自定义站点 admin_site = CustomAdminSite(name='custom_admin')
随后在项目urls.py中使用该自定义站点:
from yourapp.admin import admin_site urlpatterns = [ path('admin/', admin_site.urls), ]
若需全局生效,可在settings.py中更新Admin站点类:
ADMIN_SITE_CLASS = 'yourapp.admin.CustomAdminSite'
注意事项
- 确保Staff用户拥有
auth.change_password权限(默认已分配) CustomPasswordChangeForm需继承Django原生PasswordChangeForm并实现自定义逻辑(如旧密码验证)
内容的提问来源于stack exchange,提问作者Omid Shojaee
相关产品推荐
相关产品推荐

