Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 在测试期间,当使用正确的用户输入进行测试时,我得到;无效凭证“;_Django_Python 3.x_Django Rest Framework - Fatal编程技术网

Django 在测试期间,当使用正确的用户输入进行测试时,我得到;无效凭证“;

Django 在测试期间,当使用正确的用户输入进行测试时,我得到;无效凭证“;,django,python-3.x,django-rest-framework,Django,Python 3.x,Django Rest Framework,我只使用电话号码作为登录的唯一字段。 即使提供了正确的用户输入,身份验证似乎也无法正常工作 配置身份验证后端时出错: File "C:\Users\UBITEK\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\conf\__init__.py", line 161, in __init__ raise ImproperlyConfigured("The SECRET_KEY setting must

我只使用电话号码作为登录的唯一字段。 即使提供了正确的用户输入,身份验证似乎也无法正常工作

配置身份验证后端时出错:

 File "C:\Users\UBITEK\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\conf\__init__.py", line 161, in __init__
    raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
backends.py

from django.contrib.auth.backends import ModelBackend
from .models import User

class LoginBackend(ModelBackend):
    def authenticate(self, request, **kwargs):
        phone_number= kwargs['phone_number']
        user = User.objects.get(phone_number=phone_number)
        if user:
            return user
        else:
            return None

设置.py

from .backends import LoginBackend
from django.contrib.auth.backends import ModelBackend
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend',
    'findr.backends.LoginBackend']

关于对您问题的评论,我建议您编写自己的
django
身份验证后端:

您必须告诉Django应该如何对某人进行身份验证:

  • 使用
    用户名
    密码
  • 使用
    电话号码
    密码

这必须是明确的(不要忘记将这个新的后端添加到您的
settings.py
文件!)。

您能告诉我们什么不起作用吗?电话号码读对了吗?是在你试图认证的时候吗?是的。读对了..我想你写了自己的认证后端?我们能看看吗?:-)不,我没有写任何身份验证后端。如果你没有,Django不应该知道用户应该用他的电话号码进行身份验证!Django将尝试使用默认凭据进行身份验证:
username
password
。在为端点编写后端身份验证时遇到问题。你能帮忙吗?医生帮不上忙。我不会做你的工作,但我可以帮你。你面临什么问题?你已经做了什么?文档中有什么不清楚的地方?我已经对上面的代码进行了编辑,以反映更改。
from .backends import LoginBackend
from django.contrib.auth.backends import ModelBackend
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend',
    'findr.backends.LoginBackend']