首页  /  后端技术  /  Django  /  基于django-xadmin用户管理功能开发前端用户登录功能(一)

基于django-xadmin用户管理功能开发前端用户登录功能(一)

 作者:白驹    来源:原创    浏览:224    日期:2020年12月19日  

基于django-xadmin用户管理功能开发前端用户登录功能(一)

一、django-xadmin用户功能介绍

django-xadmin功能都是基于django-admin实现的,django-xadmin的用户管理功能也是一样只是对于,django-admin的UI界面进行了优化与改进,以下是django-xadmin的相关文件:
#文件位置:d:/xxx/xadmin/plugins/auth/

class UserAdmin(object):
    """
    此处其余代码全部删除了要继承用户添加功能的需要注意下面这些代码get_model_from,字面意思就是获取模型表单,这里我们观察到UserCreationForm,UserChangeForm,这两个实例化表单类实际上会在我们进行信息修改和创建时调用的不同表单类
    """
    def get_model_form(self, **kwargs):
        if self.org_obj is None:
            self.form = UserCreationForm
        else:
            self.form = UserChangeForm
        return super(UserAdmin, self).get_model_form(**kwargs)

   return super(UserAdmin, self).get_form_layout()

二、注册并实现我们自己的用户注册功能

这里我使用的django-xadmin,django-admin也是同理注册如下:
#adminx.py
from django.contrib.auth.forms import UserCreationForm,UserChangeForm as ChangeForm
from xadmin.plugins.auth import ChangePasswordView
#重写提示语,在django-xadmin中这段提示并未汉化我这里做了修改
class UserChangeForm(ChangeForm):
    password = ReadOnlyPasswordHashField(
        label=_("Password"),
        help_text=_(
            "原始密码不会被储存所以不能看见用户密码"
            "但是可以更改密码,"
            "<a href=\"{}\">点击这里</a>."
        ),
    )

class UserAdmin:
    list_display = ["username","nickname","image_img","birthday","age"]
    def get_form_layout(self):
        if self.org_obj:
            self.form_layout = (
                #正文信息
                Main(
                    Fieldset('',
                             'username', 'password',
                             css_class='unsort no_title'
                             ),
                    Fieldset(_('Personal info'),
                             'nickname',
                             'age',
                             'birthday',
                             'avatar',
                            ),
                ),
                #侧边信息
                Side(
                   Fieldset(_('Status'),
                            'is_active',
                    ),
                )
            )
        return super(UserAdmin, self).get_form_layout()

    def get_model_form(self, **kwargs):
        if self.org_obj is None:
            self.form = UserCreationForm
        else:
            self.form = UserChangeForm
        return super(UserAdmin, self).get_model_form(**kwargs)
#注册管理视图
xadmin.site.register(Users,UserAdmin)
#这个类是用来重写密码修改页面路径和数据表不然我们的修改路径及面包屑将跳转到django自带用户添加功能中
class UserChangePasswordView(ChangePasswordView):
    #修改数据表,设置数据表类
    model = Users

#添加修改密码页面路由
xadmin.site.register_view('^User/users/(.+)/password/$',UserChangePasswordView,name="users_change_password")
  • 评论
  • 相关评论
学习了赞一个
回复    删除   
昵称:optimism
发布日期:2021年1月7日
回复@站元素主机:欢迎常来
回复    删除