def cms_login(request): if request.method == 'GET': return render(request, 'cms_login.html') else: form = LoginForm(request.POST) print form.is_valid() if form.is_valid(): username = form.cleaned_data.get('username', None) password = form.cleaned_data.get('password', None) remember = form.cleaned_data.get('remember', None) print username, password #1.验证数据库里是否有这个用户 user = authenticate(username=username, password=password) print 'user:'******'next') if nexturl: return redirect(nexturl) else: return redirect(reverse('cms_index')) #重定向到首页 #reverse作用的是urls里面的name else: return render(request, 'cms_login.html', {'error': u'用户名或者密码错误'}) else: return render(request, 'cms_login.html', {'error': form.get_error()})
def cms_login(request): if request.method == 'GET': return render(request, 'cms_login.html') else: print request.POST, '-' * 10 form = LoginForm(request.POST) if form.is_valid(): username = form.cleaned_data.get('username', None) password = form.cleaned_data.get('password', None) remember = form.cleaned_data.get('remember', None) # 1. 先用authenticate进行验证 user = authenticate(username=username, password=password) if user: # 2. 需要登录, # 3. 我们的login视图函数不要和login重名 login(request, user) # 判断如果有remember,那么说明需要记住,使用None将 # 使用settings.py中SESSION_COOKIE_AGE指定的值, # 这个值默认是14天 if remember: request.session.set_expiry(None) else: # 浏览器一旦关闭,session就会过期 request.session.set_expiry(0) nexturl = request.GET.get('next') if nexturl: return redirect(nexturl) else: return redirect(reverse('cms_index')) else: return render(request, 'cms_login.html', {'error': u'用户名或密码错误!'}) else: return render(request, 'cms_login.html', {'error': form.get_error()})
def post(self): form = LoginForm(request.form) if form.validate(): email = form.email.data password = form.password.data remember = form.remember.data user = User.query.filter_by(email=email).first() if user and user.password == password: session['user_id'] = user.id if remember: session.permanent = True app.permanent_session_lifetime = timedelta(minutes=3600) return redirect(url_for('index')) else: return self.get(message='邮箱或密码错误') else: message = form.get_error() return self.get(message=message)
def post(self): form = LoginForm(request.form) if form.validate(): email = form.email.data password = form.password.data user = User.query.filter_by(email=email).first() if user and user.password == password: session['user_id'] = user.id #if remember: # 如果设置sesion.premanent = True # 过期时间为30天 #session.permanent = True if Questionnaire.query.filter_by(user_id=user.id).first(): return redirect(url_for('index')) return redirect(url_for('question')) else: #flash('邮箱或密码错误') return self.get(message='邮箱或密码错误') else: message = form.get_error() # print(message) return self.get(message=message)
def login(): """ 登录页面 :return: """ if request.method == 'GET': return render_template('login.html') else: form = LoginForm(request.form) if form.validate(): email = form.email.data password = form.password.data remember = form.remember.data user = HrUser.query.filter_by(email=email).first() if user and user.check_password(password): session[config.HR_USER_ID] = user.id if remember: # 默认过期时间31天 session.permanent = True return restful.success() else: return restful.params_error(message='邮箱或密码错误') else: return restful.params_error(message=form.get_error())
def cms_login(request): # 登录函数 if request.method == 'GET': print "request.GET过来的数据 =", request.GET return render(request, 'cms_login.html') else: print "request.POST过来的数据 =", request.POST print "request.POST.get()" # 用这种方法,及时没有remember这个参数,也不会报错,会默认为None print "request.POST过来的数据username ="******"username") print "request.POST过来的数据password ="******"password") print "request.POST过来的数据captcha =", request.POST.get("captcha") print "request.POST过来的数据remember =", request.POST.get("remember") print "request.POST[]" # 不要用这种方法,因为request.POST[]可能没有remember这个参数 # print "request.POST过来的数据username ="******"username"] # print "request.POST过来的数据password ="******"password"] # print "request.POST过来的数据captcha =", request.POST["captcha"] # print "request.POST过来的数据remember =", request.POST["remember"] form = LoginForm(request.POST) if form.is_valid(): # form.is_valid()表示表单设置的条件均成立 username = form.cleaned_data.get('username', None) password = form.cleaned_data.get('password', None) captcha = form.cleaned_data.get('captcha', None) remember = form.cleaned_data.get('remember', None) print "form的数据username ="******"form的数据password ="******"form的数据captcha =", captcha print "form的数据remember =", remember # 1. 先用authenticate进行验证 user = authenticate(username=username, password=password) print "user ="******"type(user) =", type(user) if user: # 2. 需要登录, # 3. 我们的login视图函数不要和login重名 login(request, user) # 判断如果有remember,那么说明需要记住,使用None将 # 使用settings.py中SESSION_COOKIE_AGE指定的值, # 这个值默认是14天 if remember: # 如果勾选了“记住我” print "用户勾选了“记住我”" request.session.set_expiry(None) """ 一、request.session.set_expiry(value);可以传递四种不同的值给它: *如果value是个整数,session会在些秒数后失效。 *如果value是个datatime或timedelta,session就会在这个时间后失效。 *如果value是0, 用户关闭浏览器session就会失效。 // 我们用的就是这种方式 *如果value是None, session会依赖全局session失效策略。 """ else: # 如果没有勾选“记住我” print "用户没有勾选“记住我”" request.session.set_expiry(0) # 浏览器一旦关闭,session就会过期 nexturl = request.GET.get('next') print "nexturl =", nexturl if nexturl: # 如果nexturl非空,则跳转到原来的地址 return redirect(nexturl) else: # 如果为空,则默认跳转到主页,查路由表得知,即article_manage return redirect(reverse('cms_index')) else: return render(request, 'cms_login.html', {'error': '用户名或密码错误!'}) else: return render(request, 'cms_login.html', {'error': form.get_error()})