注册逻辑二 发送激活链接

来源:互联网 发布:网络信息安全要学什么 编辑:程序博客网 时间:2024/06/05 08:43

一、保所填数据:

from django.contrib.auth.hashers import make_password    def post(self, request):        register_form = RegisterForm(request.POST)        if register_form.is_valid():            user_name = request.POST.get("email", "")            if UserProfile.objects.filter(email=user_name):            return render(request, 'register.html', {"register_form":register_form, "msg":"用户已存在"})            pass_word = request.POST.get("password", "")            user_profile = UserProfile()            user_profile.username = user_name            user_profile.is_active = False            user_profile.email = user_name            user_profile.password = make_password(pass_word)            user_profile.save()

二、新建util包,在其中建.py文件:

from random import Randomfrom users.models import EmailVerifyRecordfrom django.core.mail import send_mailfrom hacco.settings import EMAIL_FROMdef 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 strdef send_register_email(email, send_type="register"):    email_record = EmailVerifyRecord()    code = random_str(16)    email_record.code = code    email_record.email = email    email_record.send_type = send_type    email_record.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

三、setting.py写入:

EMAIL_HOST = ‘smtp.tom.com’
EMAIL_PORT = 25
EMAIL_HOST_USER = ‘xixi_hu@tom.com’
EMAIL_HOST_PASSWORD = ‘11111111’
EMAIL_USE_TLS = False
EMAIL_FROM = ‘xixi_hu@tom.com’

四、views.py继续填写

send_register_email(user_name, 'register')            return render(request, 'login.html')

五、urls.py 添加:

from users.views import ActiveUserView url(r'^active/(?P<active_code>.*)/$',ActiveUserView.as_view(), name="user_active")

六、views.py写入:

class ActiveUserView(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                user = UserProfile.objects.get(email=email)                user.is_active = True                user.save()        else:            return render(request, 'active_fail.html')        return render(request, 'login.html')
     if user.is_active:                    login(request, user)                    return render(request, "index.html")                else:                    return render(request, 'login.html', {'msg': '用户未激活!'})
阅读全文
0 0