django 的form使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/a6864657/article/details/86109988
今日推荐