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"
