这在我的backends.py页面中,但我认为它不起作用,因为我同时传递了电子邮件或电话号码,但未通过电话号码登录。
from .models import UserModel
from django.db.models import Q
import logging
class MyAuthBackend(object):
def authenticate(self, email_or_phone_number=None, password=None):
try:
user = UserModel.objects.get(Q(email=email_or_phone_number) |
Q(phone_number=email_or_phone_number))
if user.check_password(password):
return user
else:
return None
except UserModel.DoesNotExist:
logging.getLogger("error_logger").error("user with login %s
does not exists" % login)
return None
except Exception as e:
logging.getLogger("error_logger").error(repr(e))
return None
def get_user(self, user_id):
try:
user = UserModel.objects.get(sys_id=user_id)
if user.is_active:
return user
return None
except UserModel.DoesNotExist:
logging.getLogger("error_logger").error("user with %(user_id)d
not found")
return None
答案 0 :(得分:0)
请使用现有的Django用户模型django.contrib.auth.models.User。您可以通过获取该模型的实例并将其传递给函数login来登录:
from django.contrib.auth import login
...
user = YourModel.objects.get(params=...).user ## get the user instance using your filter / I suppose that user is Foreignkey on your model
login(request,user) ## get the request from your view
...