重置 密码这这功能。 我是没有在,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})

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

crm开发之用户重置密码的更多相关文章

  1. dede 5.7 任意用户重置密码前台

    返回了重置的链接,还要把&amp删除了,就可以重置密码了 结果只能改test的密码,进去过后,这个居然是admin的密码,有点头大,感觉这样就没有意思了 我是直接上传的一句话,用菜刀连才有乐趣 ...

  2. crm开发之用户ModelForm定制和密码加密

    写了这么多的定制 功能.终于可以定制一下了!因为是 stark 和 rbac 两个组建. 一起使用. 所以在这里,再记录一下.需要注意的点: 先放出 目录结构: 先从  stark 开始.使用star ...

  3. ubuntu 16.04系统下解决MySQL 5.7版本的root用户重置密码问题

    最近在ubuntu系统上安装了MySQL,但是安装时没有提示输入root用户密码,在网上找了一天解决方案,试图修改root用户下的登入密码,但是网上的帖子都不凑效,最后终于改成功了,因此记下来以供有同 ...

  4. [PHP] ubuntu 16.04系统下解决MySQL 5.7版本的root用户重置密码问题

    reference to : http://www.cnblogs.com/roadofstudy/p/7446690.html 最近在ubuntu系统上安装了MySQL,但是安装时没有提示输入roo ...

  5. CentOS中对MySql的root用户重置密码

    由于一般的修改ini文件来完成无密码登录数据库容易造成较大风险,所以使用修改启动服务参数的方式来更新user表,达到无密码登陆的目的. 1.关闭系统下运行的mysql服务 (1)杀掉进程号达到关闭目的 ...

  6. Maven-007-Nexus 用户添加,用户角色分配,用户修改密码,管理员重置用户密码

    配置好 maven nexus 私服后,默认的用户可通过查看[Users]查看当前私服中所存在的用户,如下图所示:

  7. Ubuntu 16.04 重置密码

    忘记了你的Ubuntu用户密码,登录不了系统:不要紧,在Ubuntu上重置密码是很简单的,即使你忘记了用户名. #1 进入Recovery Mode Recovery Mode即恢复模式:在Grub启 ...

  8. [ Laravel 5.6 文档 ] 安全系列 —— 重置密码

    http://laravelacademy.org/post/8929.html 简介 想要快速实现该功能?只需要在新安装的 Laravel 应用下运行 php artisan make:auth(如 ...

  9. ArcGIS Server Manager 重置密码

    重置忘记的密码 ArcGIS 10.5 (Windows) | 其他版本 根据以下说明为标识存储中的用户或主站点管理员帐户重置密码. 为标识存储中的用户重置密码 可按照以下步骤为标识存储中的用户重置密 ...

随机推荐

  1. JS面试Q&A(续2): Rest parameter,Arrow function 等

    rest parameter 和 Destructuring assignment. function fun1(...theArgs) { console.log(theArgs.length);} ...

  2. class中限定绑定属性__slots__方法

    使用__slots__但是,如果我们想要限制class的属性怎么办?比如,只允许对Student实例添加name和age属性.为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的 ...

  3. Oracle 归档日志文件

      今天数据群有人反应网站不能正常打开,经检查Oracle数据库远程连不上,提示信息:ORA-00257: archiver error. Connect internal only, until f ...

  4. 【Python】itchat

    错误:http://bbs.51cto.com/thread-1501477-1.html 解决方法降低certifi版本 >>> import itchat >>> ...

  5. PID控制器介绍

    在维基百科上查到的PID的介绍,收藏一下,慢慢看. https://zh.wikipedia.org/wiki/PID%E6%8E%A7%E5%88%B6%E5%99%A8#%E6%AF%94%E4% ...

  6. Shell 编程中,在循环里使用ssh免密远程执行命令的注意事项

    前提:给自己机器配置ssh免密登录#!/bin/bashcat << 'EOD' > list1234EOD while read linedo if ssh myname@127. ...

  7. python setup.py 包含静态文件及模板文件

    package_data 和MANIFEST.in都写,include_package_data=True https://stackoverflow.com/a/3597263/8025086

  8. Golang源码探索(二) 协程的实现原理(转)

    Golang最大的特色可以说是协程(goroutine)了, 协程让本来很复杂的异步编程变得简单, 让程序员不再需要面对回调地狱,虽然现在引入了协程的语言越来越多, 但go中的协程仍然是实现的是最彻底 ...

  9. if、for、while的详解及实例(一)

    实例一:猜字谜a = 1i = 0while a != 20: a = int (input ('请输入你猜的数字:')) i += 1 print(i) if a == 20: if i<3: ...

  10. vue项目tips

    在main.js引入了封装好的各组件,包括echarts.自定义组件等