Django rest framework 为什么在登录DRF API的URL路由上出现禁止的错误?

Django rest framework 为什么在登录DRF API的URL路由上出现禁止的错误?,django-rest-framework,django-rest-auth,django-rest-knox,Django Rest Framework,Django Rest Auth,Django Rest Knox,我通过django rest框架创建了一个简单的登录API。下面是代码片段: views.py url.py 现在,当我在邮递员中用电子邮件和密码进行发帖请求时。它抛出错误: { "detail": "Invalid token." } 注意:因为我正在使用knox生成令牌。所以,当我进行新的注册时,我也会得到令牌。见下面的示例: { "status": "OK", "messag

我通过django rest框架创建了一个简单的登录API。下面是代码片段:

views.py url.py 现在,当我在邮递员中用电子邮件和密码进行发帖请求时。它抛出错误:

{
    "detail": "Invalid token."
}
注意:因为我正在使用knox生成令牌。所以,当我进行新的注册时,我也会得到令牌。见下面的示例:

{
    "status": "OK",
    "message": {
        "email": "test.test@test.com",
        "first_name": "est",
        "last_name": "Sah",
        "employee_code": "6124368",
        "contact": "7500078619",
        "dob": null
    },
    "token": "db058f23ecc70f4fa3de4ac69a04dc48bb7579a63aea1ad3d038ce59b1511890"
我尝试了密码和令牌两种方式进行身份验证,但得到了相同的错误。在dev服务器运行的cmd提示符中,我看到下面的消息

[08/Apr/2021 15:26:33] "POST /apii/login/ HTTP/1.1" 403 27
Forbidden: /apii/login/
在postman的原始正文中,我在下面插入了json数据

{
    "email": "test.test@test.com",
    "password": "db058f23ecc70f4fa3de4ac69a04dc48bb7579a63aea1ad3d038ce59b1511890"
}
下面是DRF的settings.py内容

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        #'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'knox.auth.TokenAuthentication',
    ],
}
不确定我是否用正确的方法,请建议

httpie输出

python.exe -m httpie 127.0.0.1:8000/apii/login/ 'Authorization: Token db058f23ecc70f4fa3de4ac69a04dc48bb7579a63aea1ad3d038ce59b1511890'

HTTP/1.1 405 Method Not Allowed
Allow: POST, OPTIONS
Content-Length: 40
Content-Type: application/json
Date: Thu, 08 Apr 2021 11:52:31 GMT
Referrer-Policy: same-origin
Server: WSGIServer/0.2 CPython/3.6.8
Vary: Accept, Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY

{
    "detail": "Method \"GET\" not allowed."
}

您是否尝试过在命令提示符下使用httpie进行post

$ http  http://127.0.0.1:8000/{your_path} 'Authorization: Token db058f23ecc70f4fa3de4ac69a04dc48bb7579a63aea1ad3d038ce59b1511890'

有趣的windows 10,不确定是否可以在windows平台上安装。如果有其他与windows兼容的工具,请告诉我。我没有测试,但它应该可以工作。请参见此处:。一旦安装了run c:\>python-m httpie{your_path}授权:令牌DB058F23ECC70F4FA3DE4AC69A04DC48BB7579A63EA1AD3D038CE59B1511890'谢谢,我可以下载并使用它了。我得到了输出,这似乎是显而易见的。请看我的最新数据的原始帖子。
python.exe -m httpie 127.0.0.1:8000/apii/login/ 'Authorization: Token db058f23ecc70f4fa3de4ac69a04dc48bb7579a63aea1ad3d038ce59b1511890'

HTTP/1.1 405 Method Not Allowed
Allow: POST, OPTIONS
Content-Length: 40
Content-Type: application/json
Date: Thu, 08 Apr 2021 11:52:31 GMT
Referrer-Policy: same-origin
Server: WSGIServer/0.2 CPython/3.6.8
Vary: Accept, Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY

{
    "detail": "Method \"GET\" not allowed."
}
$ http  http://127.0.0.1:8000/{your_path} 'Authorization: Token db058f23ecc70f4fa3de4ac69a04dc48bb7579a63aea1ad3d038ce59b1511890'