day32 crm开发之用户重置密码功能实现
样式实现
密码重置功能为用户功能,不需要通用定制,我们在web应用stark用户管理功能模块中增加密码重置按钮
def display_reset_pwd(self, obj=None, is_header=None):
if is_header:
return '重置密码'
reset_url = self.reverse_commons_url(self.get_url_name('reset_pwd'), pk=obj.pk)
return mark_safe("<a href='%s'>重置密码</a>" % reset_url)
#修改字段代码
list_display = ['nickname', get_choice_text('性别', 'gender'), 'phone', 'email', 'depart',display_reset_pwd]
样式显示:
功能实现
web应用stark代码新增修改密码form类
from stark.service.v1 import site, StarkHandler, get_choice_text, StarkModelForm, StarkForm
from django.conf.urls import url
from django.utils.safestring import mark_safe
from django.shortcuts import HttpResponse, render, redirect
class ResetPasswordForm(StarkForm):
#密码不加密
# password = forms.CharField(label='密码')
# confirm_password = forms.CharField(label='确认密码')
#密码加密显示
password = forms.CharField(label='密码', widget=forms.PasswordInput)
confirm_password = forms.CharField(label='确认密码', widget=forms.PasswordInput)
def clean_confirm_password(self):
password = self.cleaned_data['password']
confirm_password = self.cleaned_data['confirm_password']
if password != confirm_password:
raise ValidationError('密码输入不一致')
return confirm_password
def clean(self):
password = self.cleaned_data['password']
self.cleaned_data['password'] = gen_md5(password)
return self.cleaned_data
web应用stark用户供能类新增函数
def reset_password(self, request, pk):
"""
重置密码的视图函数
:param request:
:param pk:
:return:
"""
userinfo_object = models.UserInfo.objects.filter(id=pk).first()
if not userinfo_object:
return HttpResponse('用户不存在,无法进行密码重置!')
if request.method == 'GET':
form = ResetPasswordForm()
return render(request, 'stark/change.html', {'form': form})
form = ResetPasswordForm(data=request.POST)
if form.is_valid():
userinfo_object.password = form.cleaned_data['password']
userinfo_object.save()
return redirect(self.reverse_list_url())
return render(request, 'stark/change.html', {'form': form})
def extra_urls(self):
patterns = [
url(r'^reset/password/(?P<pk>\d+)/$', self.wrapper(self.reset_password),
name=self.get_url_name('reset_pwd')),
]
return patterns
stark组件新增类
class StarkForm(forms.Form):
def __init__(self, *args, **kwargs):
super(StarkForm, self).__init__(*args, **kwargs)
# 统一给ModelForm生成字段添加样式
for name, field in self.fields.items():
field.widget.attrs['class'] = 'form-control'
stark组件中StarkHandler类新增函数
def reverse_commons_url(self, name, *args, **kwargs):
name = "%s:%s" % (self.site.namespace, name,)
base_url = reverse(name, args=args, kwargs=kwargs)
if not self.request.GET:
add_url = base_url
else:
param = self.request.GET.urlencode()
new_query_dict = QueryDict(mutable=True)
new_query_dict['_filter'] = param
add_url = "%s?%s" % (base_url, new_query_dict.urlencode())
return add_url
生成反向url功能统一调用以上函数
reverse_add_url,reverse_change_url,reverse_delete_url
效果:
分类:
crm系统开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具