Django项目实战 - 配置使用username或email登录

第一步 在users views.py编写CustomBackends类

# _*_ coding:utf-8 _*_
from django.shortcuts import render
from django.contrib.auth import authenticate, login     # import 登录和认证模块
from django.contrib.auth.backends import ModelBackend   # import ModelBackend类
from .models import UserProfile     # import UserProfile 为了获取用户的username或者email
from django.db.models import Q      # import Q用来做逻辑判断


# 重写authenticate class CustomBackend(ModelBackend): def authenticate(self, username=None, password=None, **kwargs): try: user = UserProfile.objects.get(Q(username=username)|Q(email=username)) if user.check_password(password): return user except Exception as e: return None def user_login(request): if request.method == "POST": user_name = request.POST.get("username", "") pass_word = request.POST.get("password", "") user = authenticate(username=user_name, password=pass_word) if user: login(request, user) return render(request, "index.html") else: return render(request, "login.html", {"msg": u"用户名或密码错误"}) elif request.method == "GET": return render(request, "login.html", {})

第二步配置settings.py

重载变量,将上面写的类配置进来

AUTHENTICATION_BACKENDS = ("users.views.CustomBackend",)

 

配置完成后,就可以同时使用username或email地址进行登录。

posted @ 2017-03-01 01:18  Vincen_shen  阅读(591)  评论(0)    收藏  举报