1、注册页面的配置
通常引入一个新的html页面需要如下配置:
(1)在url中配置页面,并且给一个名称
url(r'^register/$', RegisterView.as_view(),name='register')
同时要引入view中的处理前端响应的类
fromusers.viewsimportLoginView,RegisterView
(2)配置html中的静态文件如css、js、image
html>
{%loadstaticfiles%}
head>
在文件开头引入{%loadstaticfiles%},并且在所有静态文件中使用如下方法:href="{%static'css/reset.css'%}"
(3)使用github上的第三方验证码工具django-simple-captcha 0.4.6版本
创建form类
classRegisterForm(forms.Form):
email = forms.EmailField(required=True)
password = forms.CharField(required=True)
captcha = CaptchaField()
form当中有一个机制,就是允许自己定制用户输入错误时候的提示信息返回前端页面
captcha = CaptchaField(error_messages={'invalid':'验证码错误'})
引入
url(r'^captcha/', include('captcha.urls'))
配置前端form表单:
formid="email_register_form"method="post"action="{%url'register'%}"autocomplete="off">
2、注册流程,把用户填写信息取出来并保存到数据库
ifregister_form.is_valid():
user_name = request.POST.get('username','')
pass_word = request.POST.get('password','')
user_profile = UserProfile()
user_profile.username = user_name
user_profile.email = user_name
user_profile.password = make_password(pass_word)
user_profile.save()
3、给用户发送验证邮件
在app中新建utils文件夹用于存放常用的函数
新建email_send.py,以及def send_register_email(email,type=0)
给用户发送的链接是一串随机字符串,生成函数:
defrandom_str(randomlength=8):
str =''
chars ='qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM1236547890'
length =len(chars)-1
random = Random()
foriinrange(randomlength):
str+=chars[random.randint(,length)]
returnstr
发送之前要保存到数据库:
defsend_register_email(email,send_type='register'):
email_record = EmailVerifyRecord()
code_str = random_str(16)
email_record.code = code_str
email_record.email = email
email_record.send_typ = send_type
email_record.save()#先把要发送的信息保存到数据库
同时发送者邮箱需要在settings中设置:
发送邮件全部代码;
classRegisterView(View):
defget(self,request):
register_form = RegisterForm()
returnrender(request,'register.html', {'register_form':register_form})
defpost(self,request):
register_form = RegisterForm(request.POST)
ifregister_form.is_valid():
user_name = request.POST.get('email','')
pass_word = request.POST.get('password','')
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()
send_register_email(user_name,'register')
returnrender(request,'login.html')
else:
returnrender(request,'register.html',{'register_form':register_form})
4、用户点击激活链接,修改用户的登录状态
配置激活页面url:
url(r'^active/(?P.*)/$', ActiveUserView.as_view(),name='user_active')
5、当用户的状态为已经激活时,用户可以登录。
领取专属 10元无门槛券
私享最新 技术干货