版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a6864657/article/details/86109988
提前处理表格数据,节省代码量。风格较好!
在应用下创建forms.py,导入模块 forms, 创建类继承forms.form,在根据传入参数字段及其类型,required=True不能空,False可以为空。
接收变量为前端传入一致。
from django import forms
class LoginForm(forms.Form):
user_name = forms.CharField(required=True,max_lenght=20)
pass_word = forms.CharField(required=True, min_lenght=6)
导入view.py中
from django.contrib.auth import authenticate, login
from django.shortcuts import render
from users.froms import LoginForm
class LoginView(View):
def get(self, request):
"""提供登录页面"""
return render(request, 'login.html')
def post(self, request):
loginForm = LoginForm(request.POST)
if loginForm.is_valid():
user_name = request.POST.get('user_name')
pwd = request.POST.get('pwd')
# 校验用户是否为空,和激活
user = authenticate(username=user_name, password=pwd)
if (user is not None) and (user.is_active is True):
login(request, user)
# 实现记住用户名/多少天免登陆 : 如果用户勾选了'记住用户名'
remembered = request.POST.get('remembered')
if remembered != 'on':
request.session.set_expiry(0) # 设置状态保持0秒
else:
request.session.set_expiry(60 * 60 * 24 * 10) # 设置状态保持10天
return render(request, 'index.html')
else:
return render(request, 'login.html', {'msg': '账号或密码错误,激活'})
else:
return render(request, 'login.html', {"loginForm": loginForm})
简单补充
登入一个用户.登入用户的同时需要向服务器写入状态保持信息
login() : 默认将用户状态保持信息,存储到django_session中
提示 : 如果选择使用django_redis作为缓存的后端,并且希望把session数据也存储到redis中,
就需要配置 SESSION_ENGINE 和 SESSION_CACHE_ALIAS,login()会自动的寻找SESSION_ENGINE