#注册forms表单
from django import forms from captcha.fields import CaptchaField #注册表单验证 class RegisterForm(forms.Form): #error_messages debug出的错误信息提示,可以指定错误类型 #邮箱 email = forms.EmailField(required=True,min_length=6,error_messages={'min_length':u'请输入至少6位的邮箱'}) #密码 password = forms.CharField(required=True,min_length=6,error_messages={'min_length':u'请输入至少6位的密码'}) #验证码 captcha = CaptchaField(error_messages={'invalid':'验证码错误'})
from django.contrib.auth.hashers import make_password,check_password
from mx_users.forms import RegisterForm
#注册 class RegisterView(View): #显示页面 def get(self,request): re_form = RegisterForm() context = {'re_form':re_form} return render(request,'mx_users/register.html',context) def post(self,request): #提交表单 re_form = RegisterForm(request.POST) #判断表单是否合格 if re_form.is_valid(): #获取用户输入邮箱 email = request.POST.get('email') #判断用户是否注册过,如果注册过,提示用户已经存在 if UserProfile.objects.filter(email=email): context = {'re_form': re_form,'msg':'用户已经存在'} return render(request, 'mx_users/register.html', context) #用户没有注册过 获取密码加密 存储 password = request.POST.get('password') #实例化 users = UserProfile() users.username = email users.email = email #没有激活邮箱 用户需要激活邮箱才可以登录 users.is_active = False #密码加密 users.password = make_password(password) users.save() #注册成功之后发送注册成功信息 user_mes = UserMes() #保存用户的id user_mes.uname = users.id #内容 user_mes.message = u'欢迎注册喵了个咪网站' user_mes.save() #发送激活邮件 send_re_email(email, send_type='register') return render(request,'mx_users/login.html') #表单不合格 else: context = {'re_form': re_form} return render(request, 'mx_users/register.html', context)
# 邮件发送配置 # EMAIL_HOST变量为smtp服务器 EMAIL_HOST = "smtp.sina.com" EMAIL_PORT = 25 EMAIL_HOST_USER = "project_django@sina.com" EMAIL_HOST_PASSWORD = 'pcy1127?' EMAIL_USE_TLS = False # 发件人 EMAIL_FROM = "project_django@sina.com"
#注册apps
#验证码 'captcha'
#激活
from random import Random from mx_users.models import EmailCord from django.core.mail import send_mail from mx0608.settings import EMAIL_FROM #需要生成随机验证码 def random_str(randomlength=8): str = '' chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789' length = len(chars) - 1 random = Random() for i in range(randomlength): str += chars[random.randint(0,length)] return str #发送邮箱验证码 def send_re_email(email, send_type='register'): code = random_str(16) #创建邮箱验证码实例 email_code = EmailCord() email_code.code = code email_code.email = email email_code.send_type = send_type email_code.save() #邮件内容 email_title = '' email_body = '' if send_type == 'register': #邮件发送的标题和内容 email_title = '喵了个咪在线网激活链接' email_body = '请点击下面的链接激活您的账号:http://127.0.0.1:8000/active/{0}'.format(code) #发送邮件 send_status = send_mail(email_title,email_body,EMAIL_FROM,[email]) if send_status: pass
#html显示
{#表单验证错误信息提示#} {% for key,value in re_form.errors.items %} {{ value }} {% endfor %} {{ msg }}
#验证码显示
<label>验 证 码</label> {{ re_form.captcha }}