class AdminModelForm(forms.ModelForm):
    confirm_password = forms.CharField(label='确认密码', widget=forms.PasswordInput(render_value=True))

    class Meta:
        model = models.Admin
        fields = ['username', 'password']
        widgets = {
            'password': forms.PasswordInput(render_value=True),
            'username': forms.TextInput(),
        }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._set_widget_attrs()

    def _set_widget_attrs(self):
        for field_name in ['password', 'confirm_password', 'username']:
            field = self.fields.get(field_name)
            if field:
                field.widget.attrs.update({'class': 'form-control'})

    def clean_confirm_password(self):
        password = self.cleaned_data.get('password')
        confirm_password = self.cleaned_data.get('confirm_password')
        if confirm_password != password:
            raise forms.ValidationError('密码不一致,请重新输入')

        return confirm_password


# views.py
def admin_add(request):
    '''添加管理员'''
    title = '新建管理员'
    form = AdminModelForm()

    if request.method == 'POST':
        form = AdminModelForm(data=request.POST)
        if form.is_valid():
            form.save()
            return redirect('admin_list')

    context = {'title': title, 'form': form}
    return render(request, 'change.html', context)


def admin_edit(request, nid):
    '''编辑管理员'''
    row_object = models.Admin.objects.filter(id=nid).first()
    if not row_object:
        return render(request, 'error.html', {'msg': '数据不存在!!!'})

    title = '编辑管理员'
    form = AdminModelForm(instance=row_object)

    if request.method == 'POST':
        form = AdminModelForm(data=request.POST, instance=row_object)
        if form.is_valid():
            form.save()
            return redirect('admin_list')

    context = {'title': title, 'form': form}
    return render(request, 'change.html', context)


def admin_delete(request, nid):
    '''删除管理员'''
    models.Admin.objects.filter(id=nid).delete()
    return redirect('admin_list')


def admin_reset(request, nid):
    '''重置密码'''
    row_object = models.Admin.objects.filter(id=nid).first()
    if not row_object:
        return redirect('admin_list')

    title = f'重置密码 -- {row_object.username}'
    return render(request, 'change.html', {'title': title})

该代码使用了 Django 的 ModelForm 类来创建管理员的表单,并使用 forms.PasswordInput 小部件来确保密码安全输入。代码还包含以下功能:

  • 添加管理员:使用 admin_add 函数,用户可以添加新的管理员,并使用 forms.PasswordInput 确保密码安全输入,以及 clean_confirm_password 方法验证密码一致性。
  • 编辑管理员:使用 admin_edit 函数,用户可以编辑现有管理员的信息,并使用 forms.PasswordInput 确保密码安全输入,以及 clean_confirm_password 方法验证密码一致性。
  • 删除管理员:使用 admin_delete 函数,用户可以删除现有管理员。
  • 重置密码:使用 admin_reset 函数,用户可以重置现有管理员的密码。

该代码示例可以帮助用户快速构建一个简单的管理员管理系统。用户可以根据需要进行修改和扩展。


原文地址: https://www.cveoy.top/t/topic/occX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录