Django 登陆模块

导入
from django.contrib.auth import authenticate,login

    # 获取账号密码
    user_name = request.POST.get('username')
    pass_word = request.POST.get('password')
    # 表单验证,获取字典数据交给表单
    loing_forms = UserLoginForms(request.POST)
    #效验表单
    if loing_forms.is_valid():
        # 检验账号密码是否正确
        is_user = authenticate(username=user_name, password=pass_word)
        # 判断返回值是不为空则账号密码正确
        if is_user != None:
            # 写入信息
            login(request, is_user)
            return render(request, 'index.html')
    else:
        return render(request, 'login.html', {'msg': '用户名或密码错误'})
支持邮箱登录
from django.contrib.auth.backends import ModelBackend
from django.db.models import Q
class CustomBackend(ModelBackend): #新建CustomBackend类继承
    def authenticate(self, request, username=None, password=None, **kwargs):
        try: #查询数据库里是否
        #Q(username='xxx'),查有xxx到就返回真
            user = UserProfile.objects.get(Q(username=username)|Q(email=username))
            return user 
        except Exception as e:
            return None
#警告 重写Django自带的类后一应要在setting里重载这个类
AUTHENTICATION_BACKENDS = (
    'users.views.CustomBackend', #重载类的路径
)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容