• crm开发之用户重置密码


    重置 密码这这功能。 我是没有在,stark组件中。 内置的。
    所以需要,自己进行定制。
    也就只是,在已有的增删改查的基础上,再增加一条url  和相对应的  视图函数。

    好的是, 我已经预留了,增加的接口:
      

    class UserInfoHandler(StartHandler):
    
        def display_reset_pwd(self, obj=None, is_header=None):
            if is_header:
                return "重置密码"
            # return mark_safe("<a href='#'>重置密码</a>" % self.memory_url(get_url_name=self.get_del_url_name, pk=obj.pk))
            return mark_safe("<a href='#'>重置密码</a>")
    
        list_display = ["name", "nickname", "age", get_choice_text("性别", "gender"), "telephone", "email", "depart", "roles",
                        display_reset_pwd]
    
        def reset_password(self, request, pk):
            pass
    
        def extra_url(self):
            '''在现有的url基础上 再增加一个url。 但是视图函数需要自己写了'''
            partterns = [
                re_path(r"reset/pwd(?P<pk>d+)/$", self.wrapper(self.reset_password), name=self.get_url_name("reset_pwd")),
            ]
            return partterns

    在展示的页面上。 新增一个  重置密码的按钮。  写个函数就好了。display_reset_pwd(self, obj=None, is_header=None):  然后添加到list_display 列表中。

    重写  extra_url  方法。 增加一条url的线路。   视图函数自己在写一个就好了。 然后是 这条url 的别名  name=self.get_url_name("reset_pwd")  自己看着来别重复就好

    到这里已经增加了url:

    最下面的一条, 就是刚刚增加的  那条url:
    最后的任务, 就是 写上视图函数, 并且。为重置密码按钮, 添加上 href 属性就可以了:

        def display_reset_pwd(self, obj=None, is_header=None):
            if is_header:
                return "重置密码"
            rest_url = self.memory_url(get_url_name=self.get_url_name("reset_pwd"), pk=obj.pk)
            return mark_safe("<a href='%s'>重置密码</a>" % rest_url)

    用内置的,  memory_url  就可以了!  传入的参数,除了 当期那field 对象的id  还有就是。 当前url 的别名。 get_url_name("reset_pwd")  就可以获取到

    然后就是视图的问题。:

    需要,一个 form 组件。

    class ResetPassword(StarkForm):
        password = forms.CharField(label="密码", widget=forms.PasswordInput)
        confirm_password = forms.CharField(label="确认密码", widget=forms.PasswordInput)
    
        def clean_confirm_password(self):
            password = self.cleaned_data.get("password")
            confirm_password = self.cleaned_data.get("confirm_password")
            if password and confirm_password:
                if password != confirm_password:
                    raise ValidationError("两次密码输入不一致")
                return confirm_password
    
        def clean(self):
            '''对密码进行加密, 可以在clean 里面来做。'''
            password = self.cleaned_data["password"]
            self.cleaned_data["password"] = pwdmd5.creatr_md5(password)
            return self.cleaned_data

    ok: 视图

        def reset_password(self, request, pk):
            '''重置密码的视图函数'''
            userinfo_obj = models.UserInfo.objects.filter(pk=pk).first()
            if not userinfo_obj:
                return HttpResponse("用户不存在,无法重置密码")
            if request.method == "POST":
                form = ResetPassword(request.POST)
                if form.is_valid():
                    userinfo_obj.password = form.cleaned_data["password"]  # 为userinfo_obj的password重新赋值
                    userinfo_obj.save()  # 然后保存
                    return redirect(self.memory_reverse(get_url_name=self.get_list_url_name))
                return render(request, "stark/change.html", {"form": form})
            form = ResetPassword()
            return render(request, "stark/change.html", {"form": form})

    完成。  都是已经记录过的知识点。

  • 相关阅读:
    数据库(六)
    数据库(五)
    数据库(四)
    数据库(三)
    数据库(二)
    数据库
    函数 枚举和递归
    数据类型(四) 集合
    数据库基础
    特殊集合 结构体
  • 原文地址:https://www.cnblogs.com/chengege/p/10750272.html
Copyright © 2020-2023  润新知