Django 管理员

加密输入

在这里插入图片描述
在这里插入图片描述

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

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

    def clean_password(self):
        pwd = self.cleaned_data.get("password")
        return md5(pwd)

    def clean_confirm_password(self):
        # print(self.clean_data)
        pwd = self.cleaned_data.get("password")
        confirm = md5(self.cleaned_data.get("confirm_password"))
        if pwd != confirm:
            raise ValidationError("密码不一致,请重新输入")
        return confirm
import hashlib
from django.conf import settings

def md5(data_string):
    obj = hashlib.md5(settings.SECRET_KEY.encode('utf-8'))
    obj.update(data_string.encode('utf-8'))
    return obj.hexdigest()

重置密码

在这里插入图片描述
在这里插入图片描述

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

    if not row_object:
        return redirect('/admin/list/')

    title = "重置密码-{}".format(row_object.username)
    if request.method == "GET":
        form = AdminResetModelForm()
        return render(request, 'change.html', {'form': form, 'title': title})

    form = AdminResetModelForm(data=request.POST, instance=row_object)
    if form.is_valid():
        form.save()
        return redirect('/admin/list/')

    return render(request, 'change.html', {"form": form, "title": title})
class AdminResetModelForm(BootStrapModelForm):
    confirm_password = forms.CharField(
        label="确认密码",
        widget=forms.PasswordInput(render_value=True)
    )
    class Meta:
        model = models.Admin
        fields = ['password', 'confirm_password']
        widgets = {
            "password": forms.PasswordInput(render_value=True)
        }

    def clean_password(self):
        pwd = self.cleaned_data.get("password")
        md5_pwd = md5(pwd)
        exists = models.Admin.objects.filter(id=self.instance.pk, password=md5_pwd).exists()
        if exists:
            raise ValidationError("不能与以前的密码相同")
        return md5_pwd

    def clean_confirm_password(self):
        # print(self.clean_data)
        pwd = self.cleaned_data.get("password")
        confirm = md5(self.cleaned_data.get("confirm_password"))
        if pwd != confirm:
            raise ValidationError("密码不一致,请重新输入")
        return confirm

自定义ModelForm

from django import forms

class BootStrapModelForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):    # 重新定义函数,循环标签,改变样式
        super().__init__(*args, **kwargs)

        for name, field in self.fields.items():
            if field.widget.attrs:
                field.widget.attrs['class'] = 'form-control'
                field.widget.attrs['placeholder'] = field.label
            else:
                   field.widget.attrs = {'class': 'form-control', "placeholder": field.label}
### Django Admin 功能配置教程 #### 1. 安装与基本设置 为了启用 Django管理员功能,首先需要确保 `django.contrib.admin` 已经被添加到项目的 `INSTALLED_APPS` 设置中。以下是标准的安装过程: 在 `settings.py` 文件中,确认以下内容已存在: ```python INSTALLED_APPS = [ ... 'django.contrib.admin', ... ] ``` 接着,在命令行运行迁移命令以创建必要的数据库表: ```bash python manage.py migrate ``` 最后,通过以下命令创建超级用户账户以便登录管理后台: ```bash python manage.py createsuperuser ``` 输入用户名、邮箱地址以及密码即可完成创建。 #### 2. 注册模型至管理界面 为了让自定义的数据模型能够在管理界面上显示出来,需将其注册到 `admin.py` 文件中。例如,假设有一个名为 `YourModel` 的数据模型,则可以按照如下方式操作[^4]: ```python from django.contrib import admin from .models import YourModel class YourModelAdmin(admin.ModelAdmin): list_display = ('field1', 'field2') # 显示字段列表 admin.site.register(YourModel, YourModelAdmin) ``` #### 3. 使用 Bootstrap 自定义样式 如果想让 Django 管理员界面更加美观,可以通过引入第三方库如 `django-bootstrap-admin` 来实现。具体做法是在 `INSTALLED_APPS` 中加入该模块,并调整其加载顺序使其位于默认 `django.contrib.admin` 前面[^1]: ```python INSTALLED_APPS = ( 'bootstrap_admin', # 必须放在'django.contrib.admin'前面 'django.contrib.admin', ... ) ``` #### 4. 高级定制选项 对于更复杂的场景需求,比如修改菜单布局或者增加额外的功能按钮等,可参考文档《Advanced Django Admin Customizations》中的指导来实施进一步优化措施[^3]。 #### 5. 调试工具集成 开发过程中可能需要用到调试插件辅助排查问题,“Django Debug Toolbar” 就是一个不错的选择。它能够直观展示请求处理流程及相关性能指标信息[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值