美文网首页
Django 用户登录

Django 用户登录

作者: vckah | 来源:发表于2018-05-22 19:51 被阅读0次

    在实现用户登录的功能时候,遇到了这样一个问题:
    使用用户名登录能正常登录,但是使用用户注册的邮箱就不能正确登录了,后来找到了解决办法:
    在登录文件中添加如下:

    from django.contrib.auth.backends import ModelBackend
    from django.db.models import Q
    
    from .models import User
    
    class Custome(ModelBackend):
            # 重写 authenticate 函数
            def authenticate(self, request, username=None, password=None, **kwargs):
            try:
                # Q函数在这里可以支持数据库的 或 查询
                user = User.objects.get(Q(username=username) | Q(email=username) )
                # 检查密码
                if user.check_password(password):
                    return user
            except Exception as e:
                return None
    

    Django 的表单验证可以使用 form,具体如下:
    在 app 目录下新建 forms.py,添加:

    from django import forms
    class LoginForm(forms.Form):
        xxx = forms.CharField()
        # 注意这里的 xxx 一定要和网页中的 name 对应,否则不会检查
    

    然后就可以在 views 中调用了:

    from .forms import LoginForm
    class Login(View):
        def post(self, request):
            login_form = LoginForm(request.POST)
            if login_form.is_valid():
                pass
    

    相关文章

      网友评论

          本文标题:Django 用户登录

          本文链接:https://www.haomeiwen.com/subject/tqdmfftx.html