网站的色彩建筑效果图用什么软件制作
第一步:用户注册的状态保持
django框架的login()
函数封装了将用户信息写入session的操作,便于快速实现登录并保持其登录状态。
需要在RegisterView视图的post()方法中增加调用login()函数的代码,增加后如下
class RegisterView(View):def get(self, request):return render(request, 'register.html')def post(self, request):username = request.POST.get('username')password = request.POST.get('password')password2 = request.POST.get('password2')mobile = request.POST.get('mobile')allow = request.POST.get('allow')if not all([username, password, password2, mobile, allow]):return HttpResponseForbidden('缺少必要参数')if not re.match(r'^[a-zA-Z0-9_-]{5,20}$', username):return HttpResponseForbidden('请输入5-20位的用户名')if not re.match(r'^[a-zA-Z0-9]{8,20}$', password):return HttpResponseForbidden('请输入8-20位的密码')if password != password2:return HttpResponseForbidden('两次密码不一致')if not re.match(r'^1[3-9]\d{9}$', mobile):return HttpResponseForbidden('请输入正确的手机号')if allow != 'on':return HttpResponseForbidden('请勾选协议')try:user = User.objects.create_user(username=username, password=password, mobile=mobile)except DatabaseError:render(request, 'register.html', {'register_errmsg': '注册失败'})login(request,user)return redirect(reverse('contents:index'))
第二步:记住登录状态,LoginView视图新增
login(request, user)
if remembered != 'on':request.session.set_expiry(0)#没有记住用户,浏览器关闭就过期
else:request.session.set_expiry(None)#记住用户,None表示两周后过期
新增后完整LoginView
class LoginView(View):def get(self, request):return render(request, 'login.html')def post(self, request):username = request.POST.get('username')password = request.POST.get('password')remembered = request.POST.get('remembered')if not all([username, password]):return HttpResponseForbidden('缺少必须参数')if not re.match(r'^[a-zA-Z0-9_-]{5,20}$', username):return HttpResponseForbidden('请输入正确的用户名')if not re.match(r'^[a-zA-Z0-9]{8,20}$', password):return HttpResponseForbidden('密码8-20位')user = authenticate(username=username, password=password)if user is None:return render(request, 'login.html', {'account_errmsg': '账号或密码错误'})login(request, user)#自动存入sessionprint(request.session.session_key)if remembered != 'on':request.session.set_expiry(0)#没有记住用户,浏览器关闭就过期else:request.session.set_expiry(None)#记住用户,None表示两周后过期return HttpResponseRedirect(reverse('contents:index'))
启动redis-cli.exe,选择1号库,可查到