注冊功能的實現register


1.在urls.py文件里面:

from users.views import RegisterView,

url(r'register/$', RegisterView.as_view(), name='register'),

2.在views.py文件里面:
from .forms import RegisterForm,
from django.contrib.auth.hashers import make_password
 
        
'''注冊'''
class RegisterView(View):
def get(self,request):
register_form = RegisterForm()
return render(request,'register.html',{'register_form':register_form})
def post(self,request):
register_form = RegisterForm(request.POST)
if register_form.is_valid():
user_name = request.POST.get('email',None)

if UserProfile.objects.filter(email=user_name):
return render(request, 'register.html', {'register_form':register_form,'msg': '該郵箱已被注冊'}, )
pass_word = request.POST.get('password',None)
user_profile = UserProfile()
user_profile.username = user_name
user_profile.email = user_name
user_profile.is_active = False
user_profile.password = make_password(pass_word)
user_profile.save()

# 發送消息
user_message = UserMessage()
user_message.user = user_profile
user_message.message = '歡迎注冊'
user_message.save()


send_register_email(user_name,'register')
return render(request,'login.html')
else:
return render(request, 'register.html',{'register_form':register_form},)

這里如果需要用到驗證碼,請見我的博客里面的驗證碼功能

3.在forms.py文件里面:(這是需要有驗證碼的情況)
from captcha.fields import CaptchaField
class RegisterForm(forms.Form):
email = forms.EmailField(required=True)
password = forms.CharField(required=True,max_length=16,min_length=5,)
captcha = CaptchaField(error_messages={'invalid':u'驗證碼錯誤'})



3.在template/register.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 'register' %}" method="post"
在表單結尾之前加入:{% csrf_token %}
注意,表單里面的name屬性要和views.py文件里面要傳遞的屬性要相同
判斷返回頁面的樣式,是否顯示的是登陸狀態,
{% if request.user.is_authenticated %}
...
{% else %}
...
{% endif %}


4.對register.html的post提交的表單經行驗證是否合法

在app下面新建一個form.py文件
from django import forms
class RegisterForm(forms.Form):
email = forms.EmailField(required=True)
password = forms.CharField(required=True,max_length=16,min_length=5,)
captcha = CaptchaField(error_messages={'invalid':u'驗證碼錯誤'})


5.在register.html里面:
在username的字段經行判斷 :
{% 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 }}'


發送激活鏈接:請見我的博客,激活鏈接




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM