rbac集成 权限分配。之用户管理

流程都是一样的。就不在详细的记录。只写一点需要注意的地方! 或者 可以改进的地方!

1. 用户表中 只有。 name  password email 三个字段。 但是添加用户的页面,应该还要有确认密码的字段。
  所以,在UserInfoModelForm(forms.ModelForm):  中需要自己添加一个字段:
       confirm_password = forms.CharField(label="确认密码")
2. 样式问题,因为是基于bootstrap 所以会简单很多。  添加class属性的方法, 有两种:
  a. 手动添加:

    class Meta:
        model = models.UserInfo
        fields = ["name", "password", "confirm_password", "email"]
        手动的修改,显示什么样的错误信息  # 这里我是修改settings中的,语言配置。 改成 zh-hans
        error_messages = {
            "name": {"required": "用户名不能为空"},
            "password": {"required": "密码不能为空"},
            "confirm_password": {"required": "确认密码不能为空"},
            "email": {"required": "邮箱不能为空"},
        }
     widgets = {"title": forms.TextInput(attrs={"class": "form-control"})}

 通过widgets 属性, 对每一个字段,添加属性。 比较麻烦。
  b. 使用初始化方法, 继承父类。进行修改。

    def __init__(self, *args, **kwargs):
        super(UserInfoModelForm, self).__init__(*args, **kwargs)
        # 循环父类中生成的所有的字段,为每一个字段添加样式, 一次性为所有字典添加样式
        for name, field in self.fields.items():
            field.widget.attrs["class"] = "form-control"

 3. 然后是,局部钩子。 错误信息的展示:

    def clean_confirm_password(self):
        '''
        检测两次密码 是否一致
        :return:
        '''
        password = self.cleaned_data.get("password")
        confrim_password = self.cleaned_data.get("confirm_password")
        if password != confrim_password:
            raise ValidationError("两次密码输入不一致")
        return confrim_password

最终所有的,forms 组件的代码:

UserInfoModelForm

猜你喜欢

转载自www.cnblogs.com/chengege/p/10705120.html