教育平台用户注册模块

#注册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>&nbsp;&nbsp;</label>
{{ re_form.captcha }}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值