Django 用户登录

2018-05-22  本文已影响0人  vckah

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

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
上一篇下一篇

猜你喜欢

热点阅读