chenyang13677

  1.在urls.py里面添加:

from users.views import RegisterView, ActiveUserView, ForgetPwdView
url(r\'forget/$\', ForgetPwdView.as_view(), name=\'forget_pwd\'),

2.在views.py文件里面:
\'\'\'找回密码\'\'\'
class ForgetPwdView(View):
def get(self,request):
forget_form = ForgetForm()
return render(request,\'forgetpwd.html\',{\'forget_form\':forget_form},)
def post(self,request):
forget_form = ForgetForm(request.POST)
if forget_form.is_valid():
email = request.POST.get(\'email\',None)
print(email)
send_register_email(email,\'forget\')
return render(request,\'send_success.html\')
else:
return render(request, \'forgetpwd.html\',{\'forget_form\':forget_form},)


3.在forms.py文件里面添加:
class ForgetForm(forms.Form):
email = forms.EmailField(required=True)
captcha = CaptchaField(error_messages={\'invalid\':u\'验证码错误\'})
4.在app/utils/email_send.py文件里面:
elif send_type == \'forget\':
email_title = \'慕学在线网密码重置链接\'
email_body = \'请点击下面的链接重置你的密码:http://127.0.0.1:8000/reset/{0}\'.format(code)
send_status = send_mail(email_title, email_body, EMAIL_FROM, [email])
if send_status:
pass
5.在html文件下的 验证码下面添加:
{{ register_form.captcha }} 要是这个样子出错的话,就改用HTML文本:

<img src="/captcha/image/2f3f82e5f7a054bf5caa93b9b0bb6cc308fb7011/" alt="点击获取验证码" class="captcha" /> <input id="id_captcha_0" name="captcha_0" type="hidden" value="2f3f82e5f7a054bf5caa93b9b0bb6cc308fb7011" /> <input autocomplete="off" id="id_captcha_1" name="captcha_1" type="text" />

找到表单数据,在form里面加入: action="{% url \'login\' %}" method="post"
在表单结尾之前加入:{% csrf_token %}
注意,表单里面的name属性要和views.py文件里面要传递的属性要相同
判断返回页面的样式,是否显示的是登陆状态,


{% if register_form.errors.password %}errorput{% endif %}
新建一个div 来放置报错信息:
{% for key,error in register_form.errors.items%}{{ error }}{% endfor %}{{ msg }}
6.为了用户体验好,我们在form表单里面添加一个value属性   

value=\'{{ register_form.email.value }}\'


7.在urls.py文件配置路由,来处理找回密码的链接
url(r\'^reset/(?P<active_code>.*)/$\', ResetView.as_view(), name=\'reset\'),

8.在views.py文件立里面添加:

\'\'\'找回密码\'\'\'
class ResetView(View):
def get(self,request,active_code):
all_records = EmailVerifyRecord.objects.filter(code=active_code)
if all_records:
for record in all_records:
email = record.email

return render(request, \'password_reset.html\',{\'email\':email},)
else:
return render(request,\'active_fail.html\')
return render(request,\'login.html\')

9.在forms.py里添加:
class ModifyPwdForm(forms.Form):
email = forms.EmailField(required=True)
password = forms.PasswordInput()
password2 = forms.PasswordInput()

10.在html文件里面添加 :

在表单结尾之前加入:{% csrf_token %}

11.在views.py里面:
\'\'\'验证密码\'\'\'
class ModifyPwdView(View):
def post(self,request):
modify_form = ModifyPwdForm(request.POST)

if modify_form.is_valid():
pwd1 = request.POST.get(\'password1\',None)
pwd2 = request.POST.get(\'password2\', None)
email = request.POST.get(\'email\',\'1\')
print (email)
if pwd1 != pwd2:
return render(request,\'password_reset.html\',{\'email\':email,\'msg\':\'两次密码不相同\'})
user = UserProfile.objects.get(email=email)
user.password = make_password(password=pwd2)
user.save()
return render(request,\'login.html\')
else:
email = request.POST.get(\'email\', None)
return render(request, \'password_reset.html\', {\'email\': email, \'modify_form\':modify_form})

12.在urls.py里面:
url(r\'modify_pwd/$\', ModifyPwdView.as_view(), name=\'modify_pwd\'),

13.在HTML文件里面:
找到表单数据,在form里面加入: action="{% url \'modify_pwd\' %}" method="post"






分类:

技术点:

相关文章: