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配置路径:
在这里插入图片描述

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)

在这里插入图片描述
这个链接详细说明表单验证使用:
http://www.liujiangblog.com/course/django/152

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值