这是整个注册类
class LoginView(View):
'''登录页面'''
def get(self, request):
'''显示登录页面'''
if 'username' in request.COOKIES:
username = request.COOKIES.get('usernaem')
checked = 'checked'
else:
username = ''
checked = ''
return render(request, 'login.html', {'username':username, 'checked':checked})
def post(self, request):
'''登录校验'''
# 接收数据
username = request.POST.get('username')
password = request.POST.get('pwd')
# 校验数据
if not all([username, password]):
return render(request, 'login.html', {'errmsg':'数据不完整'})
# 业务处理,登录校验
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
# 用户已激活
# 用户登录状态
login(request, user)
response = redirect(reverse('goods:index'))
# 判断是否需要记住用户名
remember = request.POST.get('remember')
if remember == 'on':
# 记住用户名
response.set_cookie('username',username, max_age=7*24*3600)
else:
response.delete_cookie('username')
# 跳转到首页
return response
else:
return render(request, 'login.html', {'errmsg': '用户未激活'})
else:
# 用户名或密码错误
return render(request, 'login.html', {'errmsg': '用户名或密码错误'})
# 返回应答
有两种请求方式,
1.当浏览器get请求时,浏览器判断request.COOKIES中是否有请求来的username如果有直接显示在用户名处
这个为对应的静态网页代码
<form method="post" >
{% csrf_token %}
<input type="text" name="username" class="name_input" placeholder="请输入用户名" value="{{ username }}">
<div class="user_error">输入错误</div>
<input type="password" name="pwd" class="pass_input" placeholder="请输入密码">
<div class="pwd_error">输入错误</div>
<div class="more_input clearfix">
<input type="checkbox" name="remember" {{ checked }}>
<label>记住用户名</label>
<a href="#">忘记密码</a>
</div>
<input type="submit" name="" value="登录" class="input_submit">
</form>
2.当浏览器post请求时,证明要提交用户信息判断remember的值如果是on,记录用户的用户名到数据库中