Django开发使用类封装完成登录和表单验证

1.最开始我用声明一个方法来完成登录,如下
Django开发使用类封装完成登录和表单验证_第1张图片
在 user mode 中views 中声明一个登陆方法,然后区分post和get请求分别处理,然而友好的Django框架提供类封装思路,我们只是需要继承和重写方法就可以很简单完成我们登录,如下:

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")
        #调用表单认证
        login_form = LoginForm(request.POST)
        #判断表单认证是否成功
        if login_form.is_valid():
            pass

        # 验证登录,并返回user对象
        user = authenticate(username=username, password=password)
        # 判断user登录对是否为None,如果None表示没有登录成功
        if user is not None:
            # 注意login()方法是Django自带的所以,起名字不要跟系统重复
            login(request, user)
            return render(request, "index.html")
        else:
            # 第三个参数是返回登录页面所携带返回值
            return render(request, "login.html", {"msg": "用户名或者密码错误"})

记得引入我们的Django提供的类:

from django.views.generic.base import View

可以看到我们可以不用繁琐的区分是get或者post请求,只是需要相关方法中实现我们的逻辑就好

重新再项目中urls.py配置路径:
Django开发使用类封装完成登录和表单验证_第2张图片

2.细心的同学可以看我们的LoginForm,其实就是Django中的表单验证,为什么要有表单验证这个东西呢,是因为在实际开发中我们需要对客户端传过来的数据做一个验证,区分数据合法性,比如客户端传个“”字符串过来呢,或者黑客进行攻击呢
实现form,在我们 mode 中新建 forms.py

from django import forms

'''
表单认证,主要是用来判断,客户端传过来的额参数是否是合法
required 必传
min_length 最小长度
'''


class LoginForm(forms.Form):
    username = forms.CharField(required=True)
    password = forms.CharField(required=True, min_length=6)

Django开发使用类封装完成登录和表单验证_第3张图片
这个链接详细说明表单验证使用:
http://www.liujiangblog.com/course/django/152

你可能感兴趣的:(Python开发-Django)