python - 无法使用 Django 身份验证

标签 python django

我收到此错误:

TypeError at /auth/
authenticate() missing 1 required positional argument: 'request'

我正在使用 Django 以及 Django Rest Framework。

HTTP POST 如下所示:

{
    "username": "HelloUser",
    "password": "Hello123"
}

查看

@csrf_exempt
@api_view(['POST'])
def authenticate(self, request):
    print(request.data)
    user = authenticate(username=request.data['username'], password=request.data['password'])
    if user is not None:
        return Response({'Status': 'Authenticated'})
    else:
        return Response({'Status': 'Unauthenticated'})

网址

urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'create/', views.create),
    url(r'retrieve/', views.retrieve),
    url(r'auth/', views.authenticate),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

最佳答案

首先,您不应该将 View 名称用作authenticate,因为它会与 Django auth 的authenticate 混合在一起 其次,您不需要在身份验证 View 中使用 self 参数,即 defauthenticate_user(request) 像这样更新您的代码:

查看

from django.contrib.auth import authenticate

@csrf_exempt
@api_view(['POST'])
def authenticate_user(request):
    print(request.data)
    user = authenticate(username=request.data['username'], password=request.data['password'])
    if user is not None:
        return Response({'Status': 'Authenticated'})
    else:
        return Response({'Status': 'Unauthenticated'})

您的 urls.py 将根据 View 名称进行更新:

网址

urlpatterns = [
    url(r'^', include(router.urls)),
    url(r'create/', views.create),
    url(r'retrieve/', views.retrieve),
    url(r'auth/', views.authenticate_user),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

关于python - 无法使用 Django 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41355250/

相关文章:

python - 平均时间和 CPU Linux

django - Django 中使用 Markdown 和 Pygments 进行语法高亮显示

python - 如何使用 1 :1 aspect ratio using pillow in Python? 裁剪图像

Python (2.*) Tkinter - 高级事件处理格式

python - Django/DjangoRestFramework - unittest 未验证使用 ORM 创建的用户

django - 如何在 Django 中获取从一个模型到另一个模型的 ForeignKey 关系的名称?

python - Django 查看模板的默认值

python - Django Tastypie v0.11.1,POST请求,无法使用obj_create保存数据

python - 如何打印从 scrapy shell 中的循环派生的结果?

python - 是否可以使用预定义的排序机制在 Python 中初始化一个空的 OrderedDict?