django - 使用电话号码注册 Django
问题描述
我在后端有一个 Django 项目和一个 Django REST,在客户端有一个 vue js。我想使用我的电话号码进行注册和登录质量。如果有人早点这样做,我很抱歉,我该怎么做?我会很高兴你的建议,对不起我的英语。
使用 Django-phone-login 时出错:
文件“/home/c2dent/django/afmoon/backend/afmoon/urls.py”,第 24 行,在 url(r'^phone_login/', include('phone_login.urls', namespace='phone_login'),),文件“/home/c2dent/django-trunk/django/urls/conf.py”,第 39 行,在 include 'Specifying a namespace in include() without an app_name' django.core.exceptions.ImproperlyConfigured: Specifying a namespace in in不支持不提供 app_name 的 include()。在包含的模块中设置 app_name 属性,或者传递一个包含模式列表和 app_name 的 2 元组。c2dent@c2dent:~/django/afmoon/backend$ python3 manage.py makemigrations SystemCheckError: 系统检查发现一些问题: ERRORS: : (admin.E108) 'list_display[0]' 的值是指 'phone_number',
解决方案
您可能想为此编写自己的身份验证后端。
首先在项目设置中说明您的自定义后端路径。
AUTHENTICATION_BACKENDS = ('core.backends.EmailOrPhoneModelBackend',)
然后在单独的文档“backends.py”中,您可以编写自己的逻辑。下面是我自己的解决方案。
from django.contrib.auth.backends import ModelBackend
from .models import MyUser
class EmailOrPhoneModelBackend(ModelBackend):
#This is a ModelBacked that allows authentication with either a username or an email address.
def authenticate(self, username=None, password=None):
if '@' in username:
kwargs = {'email': username}
else:
kwargs = {'phone': username}
try:
user = MyUser.objects.get(**kwargs)
if user.check_password(password):
return user
except MyUser.DoesNotExist:
return None
def get_user(self, username):
try:
return MyUser.objects.get(pk=username)
except MyUser.DoesNotExist:
return None
以上是使用电子邮件或电话号码注册的解决方案。
推荐阅读
- sql - SQL Server - 如何使部分重复的行从原始行继承值
- .net - 提取 Sustainsys SAML 2.0 断言
- c++ - 基类类型向量中的派生结构
- android - 以edittext为条件检查firebase值或获取用户输入
- asp.net-mvc - 在 asp.net mvc 中使用quartz.net 通过电子邮件发送定期发票
- javascript - 无需用户即可运行并将数据存储在数据库中的 Node.js 应用程序
- reactjs - TypeError:将循环结构转换为 JSON Babel-cli
- machine-learning - 通过 PV-DBOW 学习的 doc 向量是否等同于 doc 中包含的词向量的平均值/总和?
- entity-framework-core - 为什么初始 Entity Framework Core 添加迁移会跳过配置?
- python - opencv 设置相机分辨率 windows vrs linux