一、保所填数据:
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 Random
from users.models import EmailVerifyRecord
from django.core.mail import send_mail
from hacco.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_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': '用户未激活!'})