from django.shortcuts import render, redirect,reverse
from django.views.generic import View
from django.http import JsonResponse
from .forms import LoginViewForm, RegisterForm, ForgetPwdForm
from .models import Before_User
from django.contrib.auth.hashers import make_password
from .send_email import send_code_email, send_accout_email
def index(request):
return render(request, 'bf/bf_index.html')
# 注册使用
class RegisterView(View):
def get(self, request):
if request.session.get('is_login', None):
return redirect(reverse("bf_index"))
register_form = RegisterForm()
return render(request, 'bf/bf_register.html',locals())
def post(self, request):
register_form = RegisterForm(request.POST)
if register_form.is_valid():
name = register_form.cleaned_data.get('name')
email = register_form.cleaned_data.get('email')
sex = register_form.cleaned_data.get('sex')
password = register_form.cleaned_data.get('password')
new_user = Before_User.objects.create(name=name, email=email, sex=sex, password=make_password(password), is_active=True)
new_user.save()
return redirect(reverse('bf_login'))
message = [item[0] for item in register_form.errors.values()]
message = ','.join(message)
return render(request, 'bf/bf_register.html', locals())
# 登录使用
class LoginView(View):
def get(self, request):
if request.session.get('is_login', None):
return redirect(reverse("bf_index"))
login_form = LoginViewForm()
return render(request, 'bf/bf_login.html', locals())
def post(self, request):
login_form = LoginViewForm(request.POST)
if login_form.is_valid():
user_id = login_form.cleaned_data.get('id')
user_name = login_form.cleaned_data.get('name')
request.session['is_login'] = True
request.session['user_id'] = user_id
request.session['user_name'] = user_name
return redirect(reverse('bf_index'))
message = [item[0] for item in login_form.errors.values()]
message = ','.join(message)
return render(request, 'bf/bf_login.html', locals())
# 忘记密码视图并发送修改后的密码给用户
class ForgetPwdView(View):
def get(self, request):
FORGETPWD_FORM = ForgetPwdForm()
return render(request, 'bf/bf_forgetpwd.html', locals())
def post(self, request):
FORGETPWD_FORM = ForgetPwdForm(request.POST)
if FORGETPWD_FORM.is_valid():
email = FORGETPWD_FORM.cleaned_data.get('email')
send_accout_email(email=email)
return redirect(reverse('bf_login'), locals())
message = [item[0] for item in FORGETPWD_FORM.errors.values()]
message = ','.join(message)
return render(request, 'bf/bf_forgetpwd.html', locals())
# 登出使用
def logout(request):
if not request.session.get('is_login', None):
return redirect(reverse('bf_index'))
request.session.flush()
# 或者使用下面的方法
# del request.session['is_login']
# del request.session['user_id']
# del request.session['user_name']
return render(request, 'bf/bf_index.html')
# 发送邮箱验证码 url 视图函数
def email_code(request, methods=['POST']):
email = request.POST.get('email')
data = send_code_email(email)
return JsonResponse(data, safe=False)